1つの列に数値ベクトルが含まれるデータフレームがあります。私はその列を含む条件に基づいて行をフィルタリングしたい。これは簡単な例です。R dplyr。数値ベクトルの列を含むデータフレームをフィルタリングします。
df <- data.frame(id = LETTERS[1:3], name=c("Alice", "Bob", "Carol"))
mylist=list(c(1,2,3), c(4,5), c(1,3,4))
df$numvecs <- mylist
df
# id name numvecs
# 1 A Alice 1, 2, 3
# 2 B Bob 4, 5
# 3 C Carol 1, 3, 4
たとえば、mapplyのようなものを使用できます。
正しくしかし、私は私が代わりにmapplyのdplyrフィルタを使用するようにしたいのですが、私はできる理由を持っている第二列のためにTRUEを返し、行1および2ためFALSE
mapply(function(x,y) x=="B" & 4 %in% y, df$id, df$numvecs)
dplyrフィルターがnumvecs列で正しく動作するようにします。 2つの行を返す代わりに、次の行は行を返しません。
filter(df, 4 %in% numvecs)
# [1] id numvecs
# <0 rows> (or 0-length row.names)
ここでは何が欠けていますか? numvecs列を含む条件式をフィルタリングするにはどうすればよいですか?
理想的には、非標準評価フィルタも使用したいと思います。そのため、フィルタ条件を引数として渡すことができます。どんな助けもありがたい。ありがとう。
でこれを行うことができます(purrr) ' – akrun
DF < - data.frame(ID = LETTERS [1:3]、 mylist = list(c(1,2,3)、c(4,5)、c(1,3,4)) df $ numvecs < - mylist df – JimBoy
FYI dplyrはdata.framesをそのまま使用することができますが、大きなデータを扱う場合はtbl_dfに変換する価値があります。 – smci