我想用`kable`从sapply的结果中打印一个表

时间:2017-01-14 04:48:08

标签: r

我想在markdown中将输出显示为表格,并希望使用if timesOfDay[0] < timesOfDay[1] { Swift.print("date[0] comes first") } else if timesOfDay[0] == timesOfDay[1] { Swift.print("times are equal") } else { Swift.print("date[1] comes first") } 来设置我的输出样式。

所以这就是我保存为kable

的内容
a

在控制台中看起来像这样:

a <- sapply(storm[,c("evtype", "fatalities", "injuries", "propdmg","cropdmg")], function(x) table(is.na(x)))

假设我不想更改名称,我该如何使用a evtype.FALSE fatalities.FALSE injuries.FALSE propdmg.FALSE 902297 902297 902297 902297 cropdmg.FALSE 902297 。我读到x必须是一个矩阵或数据帧,并尝试kable(x),这是输出的样子

as.data.frame

我看到&#34; a&#34;作为一个条目进入 我也试过像 kable(as.data.frame(a)) [1] "| | a|" "|:----------------|------:|" [3] "|evtype.FALSE | 902297|" "|fatalities.FALSE | 902297|" [5] "|injuries.FALSE | 902297|" "|propdmg.FALSE | 902297|" [7] "|cropdmg.FALSE | 902297|" attr(,"format") . . 这样的论点,但我将不得不继续这一点,并希望得到一些关于如何思考这一点的指示。谢谢

2 个答案:

答案 0 :(得分:1)

我无法重现您的问题(即使使用我自己的数据,因为您没有发布您的问题)。但这是我能够看到的:

out <- sapply(split(iris, iris$Species), function(a) table(is.na(a)))
out
#     setosa.FALSE versicolor.FALSE  virginica.FALSE 
#              250              250              250 

library(knitr)
kable(as.data.frame(out))
# |                 | out|
# |:----------------|---:|
# |setosa.FALSE     | 250|
# |versicolor.FALSE | 250|
# |virginica.FALSE  | 250|

它被格式化为乳胶表,而不是字符串。但也许你已经设定了一个选项或者其他你没有向我们展示的选项。

但是,有些选择:

kable(data.frame(Species = names(out), Rows = unlist(out)), row.names = FALSE)
# |Species          | Rows|
# |:----------------|----:|
# |setosa.FALSE     |  250|
# |versicolor.FALSE |  250|
# |virginica.FALSE  |  250|

(修改了行名称上的标题。)或者:

data.frame(Species = names(out), Rows = unlist(out)) %>%
  spread(Species, Rows) %>%
  kable()
# | setosa.FALSE| versicolor.FALSE| virginica.FALSE|
# |------------:|----------------:|---------------:|
# |          250|              250|             250|

但我一般认为,您希望使用原始标签(例如setosa),而不是setosa.FALSE。无论如何,如果这些不符合您的需求,请澄清您的预期产量。

答案 1 :(得分:1)

kable(a)应该这样做。

> a <- sapply(iris, function(x) table(is.na(x), useNA = "always"))
> kable(a)


|      | Sepal.Length| Sepal.Width| Petal.Length| Petal.Width| Species|
|:-----|------------:|-----------:|------------:|-----------:|-------:|
|FALSE |          150|         150|          150|         150|     150|
|NA    |            0|           0|            0|           0|       0|

另请注意,您可能希望将{NAC_FALSE参数设置为table(),否则您的单个未命名行会有点混乱。