将write.xlsx与使用'dplyr'

时间:2015-10-15 02:58:22

标签: r dataframe dplyr xlsx

我在尝试使用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

是否有解决方案,或xlsxdplyr不兼容?

1 个答案:

答案 0 :(得分:0)

遇到这个问题并使用 as.data.frame() 将 group_by() %>% summarise() 的 tibble 输出指定为 df 来解决它。