通过将data.frame的列名传递到apply()或plyr函数中,替换选定列中的值

通过将data.frame的列名传递到apply()或plyr函数中,替换选定列中的值,r,dataframe,R,Dataframe,假设我有一个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 但是我想做一个通用的apply()函数,而不是逐个使用replace(),因为实际数据中有很多变量需要替换。假设我定义了一个变量列表: var <- c("b", "c") vardf df[,var][df[,va

假设我有一个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
但是我想做一个通用的
apply()
函数,而不是逐个使用
replace()
,因为实际数据中有很多变量需要替换。假设我定义了一个变量列表:

var <- c("b", "c")
var
df

df[,var][df[,var] == 5] <- NA

df[,var][df[,var]==5]太好了。显然,我是以一种非常复杂的方式得到它的。谢谢最好使用
lappy
——这里不需要简化。
df <- within(df, sapply(var, function(x) x <- replace(x, x==5, NA)))
df <- data.frame(a=1:5, b=sample(1:5, 5, replace=TRUE), c=5:1)
df
var <- c("b","c")
df[,var] <- sapply(df[,var],function(x) ifelse(x==5,NA,x))
df
df[,var][df[,var] == 5] <- NA