r语言 - 在for循环中删除数据帧中的行



再来一个

我有几个数据帧,我试图删除(i)行与特定的字符串在一列和(ii)行与na's在同一列。我把下面的代码放在一起

for (i in c(df1, df2, df3)){
i <- i[!grepl("badString", i["Column"]),]
i <- i[!is.na(i["Column"], ]
}

但是我一直得到这个错误

Error in i[!grepl("badString", i["Column"]), ] : 
incorrect number of dimensions

我以前尝试使用i$Column指定列,但也得到了这个错误消息

Error: $ operator is invalid for atomic vectors

我也尝试过使用双列(用i[["Column"]]代替i["Column"]),但也没有骰子使用这种策略

再次感谢你们每天救我的命!

将数据框放在一个列表中,使用greplis.na从每个列表中删除行。如果你想用更新后的数据更改原始数据框,请使用list2env.

list_df <- dplyr::lst(df1, df2, df3)
result <- lapply(list_df, function(x) 
x[!(grepl('badString', x$Column) | is.na(x$Column)), ])
list2env(result, .GlobalEnv)

最新更新