【问题标题】:Make output of *apply look pretty使 *apply 的输出看起来很漂亮
【发布时间】:2012-11-01 12:24:27
【问题描述】:

我有以下行

apply(wrld_simpl@data, 1, FUN=function(x) sum(is.na(x)))

给出以下输出

 ATG DZA AZE ALB ARM AGO ASM ARG AUS BHR BRB BMU BHS BGD BLZ BIH BOL MMR 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
BEN SLB BRA BGR BRN CAN KHM LKA COG COD BDI CHN AFG BTN CHL CYM CMR TCD 
 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 

等等。我知道为这个数据集计算 NA 并没有多大意义,但是一旦我将这些数据与“本土”数据集合并,它就更有意义了,我的挑战仍然是一样的。后两个问题的出现是因为我想将其放入我使用 knitr 的报告中:

  1. 我能否在交叉表中为所有变量生成此输出,即左侧列中的国家和一些变量(例如 wrld_simpl@data[6:11])作为标题?

  2. 如果不是每个读者都熟悉代码,如何将国家代码与国家名称 (wrld_simpl@data$NAME) 交换?

  3. 如何将输出放入漂亮的表格(边框、标题、标签)?

任何指针表示赞赏!

谢谢!

【问题讨论】:

  • 关于问题三:“漂亮的桌子”到底是什么意思?您想查看打印为 pdf、html 的表格吗?您可以查看 xtable 包 cran.r-project.org/web/packages/xtable/index.html,它与 knitr 配合使用非常顺畅。
  • 这是一个很好的提示,因为这就是我的意思。经过一些工作,我把我的表格变成了 pdf。现在我需要找出如何显示所有结果。由于有 246 个国家/地区,因此结果不会显示在一个页面上,而是被切断,下一页没有结果。总是有更多的东西要学(尤其是对于像我这样的新手!)但是非常感谢您的帮助!

标签: r knitr


【解决方案1】:

我将plyr 包用于此类事情,因为**ply 函数比r-base 的默认*apply 方法更易于使用。

library("plyr")
library("maptools")
data( wrld_simpl )
adply( wrld_simpl@data, 1, function(x) {
  sum(is.na( x[ c("LON", "LAT") ] )) # change to the columns you want to count the NA's on
})[ ,5:12 ]

【讨论】:

  • 太棒了。任何指针,如何将一长串变量添加到计数中?特别是我的数据集的变量 14 到 61。再次感谢!
  • 您只需将[ ,5:12 ] 替换为适当的内容,例如[, c(5:12,14:61) ] ?
  • 天啊!现在我明白了!谢谢!所以最后一行看起来像这样:head(adply( wrld_simpl2@data, 1, function(x) {sum(is.na( x[ , c(14:61) ] )) })) [,c(5,62)](注意这是 wrld_simpl2。)有人可以帮我解决我的问题 3 吗?
猜你喜欢
  • 2013-11-17
  • 2015-11-16
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多