私はさまざまな種類のリストであるオブジェクトのRリストを持っています。カテゴリが「内部」のすべてのオブジェクトの「コスト」値が必要です。これを達成する良い方法は何ですか?Rサブリスト付きリスト:規則に一致するすべての要素を配列に抽出します
私は
my_dataframe$cost[my_dataframe$category == "internal"]
リストについては、類似したイディオムは何のようなものを行っていると思いますデータフレームを持っていた場合は?
mylist<-list(list(category="internal",cost=2),
list(category="bar",cost=3),list(category="internal",cost=4),
list(category='foo',age=56))
ここで私はc(2,4)を取得したいと思います。このようなサブセットは動作しません:
mylist[mylist$category == "internal"]
私がすることで、この部分を行うことができます。
temp<-sapply(mylist,FUN = function(x) x$category=="internal")
mylist[temp]
[[1]]
[[1]]$category
[1] "internal"
[[1]]$cost
[1] 2
[[2]]
[[2]]$category
[1] "internal"
[[2]]$cost
[1] 4
しかし、私は(例えば)など、それらを合計することができるようにどのように私は、コストを得るのですか?私はこれを試してみましたが、あまり役に立ちません。
unlist(mylist[temp])
category cost category cost
"internal" "2" "internal" "4"
私がしたいことをするためのきちんとしたコンパクトなイディオムはありますか?
ありがとうございます!それは動作します。あなたは[[作品はどうですか?それは演算子ですか? –
これはRの3つの抽出演算子の1つです。一般に '['と '[[' 'ベクトルには同様の関数がありますが、リストなどの再帰的ベクトルでは異なる働きをします。上記のコードの最後の行に加えて、 'do.call(" sum "、lapply(mylist、function(x)x [x [[" category "]] ==" internal "] [" cost "] )() ")")は動作しませんが、do.call( "sum"、lapply(mylist、function(x)x [x [[カテゴリ "]] =="内部 " 'うまくいく。 – shayaa