将函数应用于多个数据框

Apply a function to multiple dataframes

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

你几乎做对了。您只是忘记了 R return 是函数的最后访问元素。在你的例子中,它只是每个数据框的一个子集,所以将你的函数设置为 return 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)
})