2016-11-16 83 views
0

阅读它构件我使用httr检索中的R的http响应R中一个完整的阵列,:阅读,而不是由构件

my_recs = POST(url,body=readChar(fileName, file.info(fileName)$size), do.call(add_headers, hd)) 
my_recs_str = content(my_recs) 
my_recs_data = my_recs_str$data 

我试图检索整个组ID的存储在my_recs_data,买我只能用双括号,以达到他们:

my_ids[i] = my_recs_data[[i]]$id 

有什么办法来检索所有的ID不循环逐一通过他们? 谢谢。

+0

确实包括'dput(my_recs_data)的输出在未来你的问题'。大多数人可以推断这是基于上下文的嵌套列表,但情况并非总是如此。 – nrussell

回答

1

如下您可以vectorise代码:

my_ids = sapply(my_recs_data, `[[`, 'id') 

这相当于my_recs_data[[i]][['id']]而非…$id。但是,实际上这不应该有所作为。

+0

谢谢。我应该怎么做我有一个双引用 - 'prod_name = my_recs_data [[rec]] $ productName $ FullName' –

+0

我想我说得对,'sapply(my_recs_data,'[[','productName ')['FullName',]' –

+0

@RoeeAnuar小心一点,注意我在代码中使用了反引号['',不是单引号。单引号发生工作,但我认为他们是马虎的风格,而R *不应该*接受他们。 –

0

谢谢Konrad!

对于基于一个属性从所述嵌套列表创建一个向量,的 而不是通过循环:

my_ids[i] = my_recs_data[[i]]$id 

我使用:

my_ids = sapply(my_recs_data, `[[`, 'id') 

为两个嵌套属性,而不是通过循环:

prod_names[i]=my_recs_data[[i]]$productName$FullName 

我用过:

prod_names=sapply(my_recs_data, '[[','productName')['FullName',] 

而不是一个最复杂的:

sku[i]=my_recs_data[[i]]$productSKU[[1]]$value 

我用双sapply:

sku=sapply(sapply(my_recs_data,'[[','productSKU') ,'[[','value')