【发布时间】:2019-10-04 05:24:11
【问题描述】:
我正在生成报告,在尝试使用 xlsx 包的 write.xlsx 编写 tibble 时,它给出了错误(即使在我在 write.xlsx 中指定 as.data.frame(tibble) 之后)。 检查 tibble 后,我意识到当我添加多个列并将结果存储在 tibble 的另一列中时,总列已成为数据框。
例子:
> marks <- tibble(math = c(90,90,85,90),
+ physics = c(90,85,95,80),
+ Total = c(rep(NA,4)))
> marks
# A tibble: 4 x 3
math physics Total
<dbl> <dbl> <lgl>
1 90 90 NA
2 90 85 NA
3 85 95 NA
4 90 80 NA
> class(marks)
[1] "tbl_df" "tbl" "data.frame"
> str(marks)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 4 obs. of 3 variables:
$ math : num 90 90 85 90
$ physics: num 90 85 95 80
$ Total : logi NA NA NA NA
> marks$Total <- marks[,1] + marks[,2]
> str(marks)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 4 obs. of 3 variables:
$ math : num 90 90 85 90
$ physics: num 90 85 95 80
$ Total :'data.frame': 4 obs. of 1 variable:
..$ math: num 180 175 180 170
>
正如我们在上面看到的,我认为我可以使用 R 的矢量化操作,但是在将两列相加并将结果存储在 Total 列中之后,“Total”列已更改为数据框。
有人可以告诉我为什么会发生这种情况,以及如何执行上述操作。
已编辑:OK 似乎是因为 tibble 不降维,它不像添加两个向量。
【问题讨论】:
-
您能添加重现问题的步骤吗?你是如何添加列的?和问题中的一样吗?
-
无法重现。
-
NelsonGon,在上面添加了可重现的代码。是的,我已经添加了使用 [,colnum] 的问题
-
对我来说一切正常。你能添加你的 sessionInfo 吗?您是否只是对课程“感到困惑”,即课程中有
data.frame?我觉得如果你想用tibbles,最好还是用tidyverse,用dplyr之类的。 -
试试
marks$Total <- marks$math + marks$physics然后write.xlsx?知道错误是什么也很有用。