在列表中用空字符串替换NA

3

我有一个大型的矩阵数据列表,看起来像这样:

$`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个回答

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"  ""  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接