我有很多数据框,其中缺失值由字符串'NA'
表示,但R不会理解这些字符串。
冗长的解决方案是将以下函数应用于每个数据帧:
mydf[mydf == 'NA'] <- NA
我想将上述功能应用于许多数据帧。
考虑以下示例:
set.seed(123)
A=as.data.frame(matrix(sample(c('NA',1:10),10*10,T),10)))
B=as.data.frame(matrix(sample(c('NA',LETTERS[1:10]),10*10,T),10))
C=as.data.frame(matrix(sample(c('NA',letters[1:10]),10*10,T),10))
我最好的尝试(不起作用):
target <- list(A, B, C)
lapply(target, function(x) x[x == 'NA'] <- NA )
答案 0 :(得分:2)
你几乎做对了。你只是忘了R返回函数的最后访问元素。在您的情况下,它只是每个数据框的子集,因此将函数设置为返回x
并且它可以工作:
set.seed(123)
A = as.data.frame(matrix(sample(c('NA',1:10),10*10,T),10))
B = as.data.frame(matrix(sample(c('NA',LETTERS[1:10]),10*10,T),10))
C = as.data.frame(matrix(sample(c('NA',letters[1:10]),10*10,T),10))
target = list(A, B, C)
lapply(target, function(x) {
x[x == 'NA'] <- NA
return(x)
})