magrittr
似乎无法将“工作簿”类对象通过管道传输到addWorkbook
包中的函数openxlsx
.
(别介意为什么我需要使用 excel...哎哟)
例如,要写InsectSprays
使用“基本”语法将数据集转换为 Excel 文件:
library("openxlsx")
insect.wb <- createWorkbook()
addWorksheet(wb = insect.wb,
sheetName = "Insect Spray")
writeData(wb = insect.wb,
sheet = "Insect Spray",
x= InsectSprays)
openXL(insect.wb)
打开包含数据的临时 Excel 文件。
So magrittr
should
通过管道将值转发到表达式或函数调用中;某物
沿着x %>% f, 而不是f(x) https://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html
But e.g.
library("openxlsx")
library("magrittr")
insect.wb <- createWorkbook()
insect.wb %>%
addWorksheet(sheetName = "Insect Spray") %>%
writeData(sheet = "Insect Spray",
x= InsectSprays)
Returns
Error in writeData(., sheet = "Insect Spray", x = InsectSprays) :
First argument must be a Workbook.
But insect.wb
是一个工作簿对象:
> insect.wb <- createWorkbook()
> class(insect.wb)
[1] "Workbook"
attr(,"package")
[1] "openxlsx"
这表明问题在于该对象没有通过管道输入......
我只是搞乱了语法,还是有更有趣的解释来解释为什么失败?
为了兴趣,前向管道没有问题,writeData
——如果我们将前向管道的使用转移到之后addWorksheet
,它也工作得很好:
insect.wb <- createWorkbook()
addWorksheet(wb = insect.wb,
sheetName = "Insect Spray")
insect.wb %>%
writeData(sheet = "Insect Spray",
x= InsectSprays)
openXL(insect.wb)