我在使用xlsx
包中的write.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
?
month2<- as.data.frame.matrix(month2)
,它就能正常工作。 - user3710546