我有一个数据框,其中一些变量是列表。我正试图找到一种方法来搜索这些列表中的特定值。
以下与我正在使用的内容类似。
df <- data_frame(
abc = letters[1:5],
lst = list(1:3, 2:6, 7:10,
1, 1:5)
)
我希望能够像以下一样;
df$result <- 1 %in% df$lst
这会返回错误的结果。
如果我按行观察它,我会看到
1 %in% df$lst
FALSE
1 %in% df$lst[[1]]
TRUE
所以我认为我需要以递归方式查看数据框每行中的列表。我不确定最佳方法是什么。
为清楚起见; 这是已有50多个变量的数据框中的两个变量。我宁愿避免爆炸这些变量,但我愿意接受这个建议。
每个单元格中始终只有一个列表。
在实际数据中,唯一的区别是该行由字符值而非数字组成。
感谢您的帮助!
答案 0 :(得分:2)
我认为这应该做的工作,但你确定它是在数据框中存储列表的正确方法。
lapply(df$lst,function(x)(1 %in% x))
> df
Source: local data frame [5 x 2]
abc lst
<chr> <list>
1 a <int [3]>
2 b <int [5]>
3 c <int [4]>
4 d <dbl [1]>
5 e <int [5]>
> lapply(df$lst,function(x)(1 %in% x))
[[1]]
[1] TRUE
[[2]]
[1] FALSE
[[3]]
[1] FALSE
[[4]]
[1] TRUE
[[5]]
[1] TRUE
>