我有多个数据框,这些数据框已从电子表格读取到r中。所有数据帧都有相同的列,但是列中的某些观察值输入错误(在数据输入过程中),并且r将某些视为posixct,将其他视为整数和因子等。问题是rbindlist函数在某些机器上存在问题(它可能取决于data.table的版本)。好消息是,这个有问题的变量没有得到分析,可以删除。我该如何过滤列表中的多个数据框才能做到这一点?
我尝试了不同的代码,但似乎都无法在列表中的所有数据帧上正常工作。这是一些虚拟数据:
lst <- list(a = 1:4, b = 4:8, c = 8:10)
lst1 <- list(a = 1:4, b = 4:8, c = 8:10)
iist2<-list(lst, lst1)
if("b" %in% names(iist2)) iist2 <- iist2[ - which(names(iist2) == "b")]
但是,如果只是lst或lst1,则上述方法无效。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以尝试
lapply(iist2, function(i)i[!names(i) %in% 'b'])
答案 1 :(得分:1)
我们可以使用discard
或keep
library(purrr)
map(iist2, ~ keep(.x, names(.x) != "b"))
#[[1]]
#[[1]]$a
#[1] 1 2 3 4
#[[1]]$c
#[1] 8 9 10
#[[2]]
#[[2]]$a
#[1] 1 2 3 4
#[[2]]$c
#[1] 8 9 10