过滤R中列表的值

时间:2016-04-16 08:01:48

标签: r

我有这个数据框列表,

[[1]]
  ns                  title missing
1  0 another string to fail        

[[2]]
  pageid ns  title
1  40657  0 Action

[[3]]
  pageid ns        title
1   8609  0 Nationalisme

我想要一个脚本来删除所有没有“pageid”,“ns”和“title”作为colnames的排名。

先谢谢你

1 个答案:

答案 0 :(得分:3)

我们可以使用%in%all通过使用vector循环遍历list元素来创建逻辑sapply。逻辑vector可用于list

的子集
lst[sapply(lst, function(x) all(c("pageid", "ns", "title") %in% names(x)))]
#[[1]]
#  pageid ns  title
#1  40657  0 Action

#[[2]]
#  pageid ns        title
#1   8609  0 Nationalisme

或者我们可以使用Filter

Filter(function(x) all(c("pageid", "ns", "title") %in% names(x)), lst)

数据

lst <- list(data.frame(ns = 0, title = "another string", missing = "to fail"), 
        data.frame(pageid = 40657, ns =0, title = "Action"), 
        data.frame(pageid= 8609, ns=0, title = "Nationalisme"))