【发布时间】:2016-03-26 19:46:39
【问题描述】:
我有一个数据框,其中包含每行数据框的值列表。我想检查一些条件,并根据该条件对数据框进行子集化。例如,在 belove 代码中,myDF 是我的数据框。那是
ID Value
A c(1000, 2000, 3000)
B c(2000, 500, 1000)
ID <- c("A", "B")
Value <- list( c(1000, 2000, 3000), c(2000, 500, 1000))
myDF <- data.frame(ID=ID, Value=cbind(Value))
vec <- c(2000,3000)
##Condition
cnd <- which(myDF$Value[[1]] %in% vec)
上述条件 cnd 将给出所需的列表,但将这个条件放在子集函数中时,它不会得到正确的索引。
ld <- lapply(seq(myDF$Value) , function(x) myDF[ which(myDF$Value[[x]] %in% vec),])
这将输出如下。因为结果中 myDF 得到的索引不正确。
[[1]]
ID Value
2 B 2000, 500, 1000
NA <NA> NULL
[[2]]
ID Value
2 B 2000, 500, 1000
NA <NA> NULL
我想要的输出如下。请帮忙。
ID Value
A c(2000, 3000)
B 2000
【问题讨论】: