2016-11-16 9 views
0

でメンバーにそれを読んで、私はRでhttp応答を取得するためにhttrを使用しています: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 

は、それらを1つずつをループさせずにすべての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') 

ネストされた2つの属性のために、代わりをループで:

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

私は:

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

、代わりに1最も複雑なの:

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

私は二重のsapplyを使用:

sku=sapply(sapply(my_recs_data,'[[','productSKU') ,'[[','value') 
関連する問題