再来一个
我有几个数据帧,我试图删除(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"]
),但也没有骰子使用这种策略
再次感谢你们每天救我的命!
将数据框放在一个列表中,使用grepl
和is.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)