我在尝试使用write.xlsx
包中的函数xlsx
将数据帧写入excel文件时遇到问题。虽然仅在使用dplyr
包中的函数创建数据框时才会出现此问题。当我使用基本功能时,没有问题。以下是一个最小的例子。
首先,样本数据:
library(dplyr)
library(xlsx)
month <- c('Julio','Diciembre','Diciembre','Agosto','Noviembre',
'Diciembre', 'Junio','Septiembre','Agosto','Julio')
irrelevant_column <- rep(1,10)
df <- as.data.frame(cbind(irrelevant_column, month))
正如我所说,当我使用基本功能时,没有问题:
month1 <- table(df$month, df$irrelevant_column)
month1 <- prop.table(month1 , 2)
month1 <- as.data.frame.matrix(month1 )
write.xlsx(month1 , file="month1.xlsx")
没有出现错误,但是当我使用'dplyr'创建类似的数据框时:
month2<- count(df, month)
month2<- mutate(month2, porc = n / sum(month2[, 2]))
month2<- as.data.frame.matrix(month2)
write.xlsx(month2, file="month2.xlsx")
出现以下错误消息:
Error in .jcall(cell, "V", "setCellValue", value) :
method setCellValue with signature ([Ljava/lang/String;)V not found
In addition: Warning message:
In if (is.na(value)) { :
the condition has length > 1 and only the first element will be used
是否有解决方案,或xlsx
与dplyr
不兼容?
答案 0 :(得分:0)
遇到这个问题并使用 as.data.frame() 将 group_by() %>% summarise() 的 tibble 输出指定为 df 来解决它。