【发布时间】:2011-11-03 06:29:39
【问题描述】:
假设我有一个 date.frame,例如:
df <- data.frame(a=1:5, b=sample(1:5, 5, replace=TRUE), c=5:1)
df
a b c
1 1 4 5
2 2 3 4
3 3 5 3
4 4 2 2
5 5 1 1
我需要将b和c列中的所有5替换为NA,然后返回df:
df
a b c
1 1 4 NA
2 2 3 4
3 3 NA 3
4 4 2 2
5 5 1 1
但我想做一个通用的apply() 函数,而不是一个一个地使用replace(),因为在实际数据中实际上有很多变量需要替换。假设我已经定义了一个变量列表:
var <- c("b", "c")
然后想出类似的东西:
df <- within(df, sapply(var, function(x) x <- replace(x, x==5, NA)))
但什么也没发生。我在想是否有一种方法可以通过将列名的变量列表从 data.frame 传递到通用 apply / plyr 函数(或者可能是其他一些完全不同的方式)来解决上述问题。谢谢~
【问题讨论】: