我在R中有一些数据帧,例如:
df1
df2
df3
我想对它们采取一些措施,例如明确NA值:
df1[is.na(df1)]=0
df2[is.na(df2)]=0
df3[is.na(df3)]=0
我虽然可以这样做:
lapply(c(df1,df2,df3),function(x){x[is.na(x)]=0})
但它似乎不起作用......我也尝试过使用<<-
。
我错过了什么吗?如何更改函数内的全局对象?
答案 0 :(得分:1)
我们可以使用list2env
对lapply
进行更改以反映在全局环境中(尽管不建议这样做,因为我们可以执行list
中的所有操作)。< / p>
list2env(lapply(mget(paste0('df', 1:3)), function(x)
replace(x, is.na(x), 0)), envir=.GlobalEnv)
df1
# col1 col2
#1 0 1
#2 1 2
#3 2 0
#4 3 4
df1 <- data.frame(col1= c(NA, 1:3), col2= c(1:2, NA, 4))
df2 <- data.frame(col1= c(1:3, NA), col2= c(1, NA, 3, 4))
df3 <- data.frame(col1= c(2,4, NA), col2 = c(1, NA, 2))