2016-11-16 23 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')