搜索数据框中的列表

时间:2017-01-06 09:27:11

标签: r dataframe

我有一个数据框,其中一些变量是列表。我正试图找到一种方法来搜索这些列表中的特定值。

以下与我正在使用的内容类似。

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多个变量的数据框中的两个变量。我宁愿避免爆炸这些变量,但我愿意接受这个建议。

每个单元格中始终只有一个列表。

在实际数据中,唯一的区别是该行由字符值而非数字组成。

感谢您的帮助!

1 个答案:

答案 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

>