将NA替换为列表中的空字符串

时间:2014-04-20 12:53:34

标签: r

我有大量的矩阵数据列表,如下所示:

$`1`
 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]                     
 2010 "6 811 529 000" NA   NA   NA   "455 782 000"  
 2011 "7 531 264 000" NA   NA   NA   "585 609 000"        
 2012 "8 013 843 000" NA   NA   NA   "702 256 000" 

我想用空字符串替换NA:""

解决方案必须无法转换为data.frame,因为:x[is.na(x)] <- "" 会解决这个问题。

这对我有用:print(x, na.print = "")但我无法弄清楚如何存储打印输出。

1 个答案:

答案 0 :(得分:3)

您可以使用lapply

执行此操作
# Setup sample data frame
dat = list(matrix(c(NA, "a", "b", NA), nrow=2),
           matrix(c(rep("r", 8), NA), nrow=3))
dat
# [[1]]
#      [,1] [,2]
# [1,] NA   "b" 
# [2,] "a"  NA  
# 
# [[2]]
#      [,1] [,2] [,3]
# [1,] "r"  "r"  "r" 
# [2,] "r"  "r"  "r" 
# [3,] "r"  "r"  NA  

# Do conversion
dat <- lapply(dat, function(x) { x[is.na(x)] <- "" ; x })
dat
# [[1]]
#      [,1] [,2]
# [1,] ""   "b" 
# [2,] "a"  ""  
# 
# [[2]]
#      [,1] [,2] [,3]
# [1,] "r"  "r"  "r" 
# [2,] "r"  "r"  "r" 
# [3,] "r"  "r"  ""