将函数应用于多个数据帧

时间:2015-09-03 08:54:25

标签: r dataframe na

我有很多数据框,其中缺失值由字符串'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 )

1 个答案:

答案 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)
})