r-如何在数据帧列表中子集赋值



我有一个数据帧列表,我想有条件地重新分配数据帧中的值。如果我只是分配给一个数据框架,我会说类似的话

DF[DF==9] <- NA

将data.frame中9的所有条目设置为NA。但是,当我尝试使用lapply对列表中的每个data.frame:执行相同的过程时

List_of_DFs <- list(DF1, DF2, DF3)
List_of_DFs <- lapply(List_of_DFs, function(x) x[x==9] <- NA)

不是9的每个值都变为NA,而是整个列表条目变为NA。因此,在上述情况下,List_of_DFs变为NA,NA,NA

我知道我可以用for循环和[[]]子集运算符来实现这一点,但我认为一定有更好的方法。

如果这很有趣或相关,那么这个问题背后的动机是数据帧列表来自XLConnect,随后我将按行绑定数据帧,但我首先想在一列中删除一些应该都是数字的字符值,这样我就可以强制为数字,然后按行绑定。

我们需要返回x来获取数据。帧

lapply(List_of_DFs, function(x) {x[x==9] <- NA; x})

或者另一个选项是replace

lapply(List_of_DFs, function(x) replace(x, x == 9, NA))

如果我们将dplyrmutate_each一起使用,我们可以将9的列值更改为NA

lapply(List_of_DFs, function(x) x %>%
                                  mutate_each(funs(replace(., .==9, NA))))

最新更新