.jcall(cell,“V”,“setCellValue”,value)出错:带签名的方法setCellValue(尝试write.xlsx时未找到[D)V

时间:2017-06-06 15:32:07

标签: r

library(dtplyr)
library(xlsx)
library(lubridate)

'data.frame':   612 obs. of  7 variables:
 $ Company           : Factor w/ 10 levels "Harbor","HCG",..: 6 10 10 3 6 8 6 8 6 6 ...
 $ Title             : chr  NA NA NA NA ...
 $ Send.Offer.Letter :Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 612 obs. of  1 variable:
  ..$ Send Offer Letter: Date, format: NA NA NA NA ...
  ..- attr(*, "spec")=List of 2
  .. ..$ cols   :List of 1
  .. .. ..$ Send Offer Letter: list()
  .. .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
  .. ..$ default: list()
  .. .. ..- attr(*, "class")= chr  "collector_guess" "collector"
  .. ..- attr(*, "class")= chr "col_spec"
 $ Accepted.Position : chr  NA NA NA NA ...
 $ Application.Date  : chr  NA NA NA NA ...
 $ Hire.Date..Start. :Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 612 obs. of  1 variable:
  ..$ Hire Date (Start): POSIXct, format: "2008-05-20" NA NA "2008-05-13" ...
 $ Rehire..Yes.or.No.: Factor w/ 23 levels "??","36500","continuing intern",..: NA NA NA NA NA NA NA NA NA NA ...

我有一个非常凌乱的数据集(它完全是在excel电子表格上自由输入)关于新员工。与日期相关的变量当然会让事情变得困难。条目格式没有一致性,有时随机字符串是日期的一部分(想想5/17,日tbd)等等。我终于将日期格式化为POSIXct格式,但它导致了上面你看到的奇怪情况看来我的列中有嵌套变量。我已经将两个日期变量强制转换为as.character($ Accepted.Position和$ Application.Date),因为我已经看到了POSIXct日期格式化导致write.xlsx出现问题的示例。

当我尝试写入xlsx时,我得到以下内容:

write.xlsx(forstack, file = "forstackover.xlsx", col.names = TRUE)
Error in .jcall(cell, "V", "setCellValue", value) : 
  method setCellValue with signature ([D)V not found
In addition: There were 50 or more warnings (use warnings() to see the first 50)

我的输入太长了,无法发布到此处,所以这里是它的pastebin: Dput forstack

尝试强制$ Hire.Date ..使用as.character启动会产生奇怪的结果,我已将其部分粘贴在此处: as.character result

我不确定采取什么行动。我在这里找到了类似的讨论: stack question similar to this one

但是这个用户试图调用ggplot2图形的列的特定部分。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

我同意@greg dubrow 的解决方案。我有一个更简单的建议作为代码。

write.xlsx(as.data.frame(forstack), file = "forstackover.xlsx", col.names = TRUE)

file.choose()

让你更自由
write.xlsx(as.data.frame(forstack), file = file.choose(), col.names = TRUE)

顺便说一下,在我的代码中,类似于@Lee 的,它给出了 row.names = FALSE 的错误。错误现已解决。如果我们再扩展一点:

write.xlsx(as.data.frame(forstack), file = file.choose(), col.names = TRUE, row.names=FALSE)

答案 1 :(得分:0)

尝试使用xlsx软件包将小写的tbl_df写入xlsx时遇到了这个问题。

我添加了row.names = FALSE选项时抛出了错误,但是没有row.names call时没有错误。

我将tbl_df转换为data.frame,并且有效。