2015-12-23 12 views
12

Ramka danych jest widoczna bez żadnego błędu. Ale gdy to samo jest drukowane za pomocą write.xlsx fucnction pakietu XLSX, daje błąd.Błąd podczas drukowania data.frame w programie Excel za pomocą pakietu XLSX w R

Error in .jcall(cell, "V", "setCellValue", value) : 
    method setCellValue with signature ([D)V not found. 

dput z data.frame wygląda następująco:

Timestamp   qs   pqs  logqs   es   p_imp  dep r_dep  agg_rtn 
       (time)  (dbl)  (dbl)  (dbl)  (dbl)   (dbl) (dbl) (dbl)   (dbl) 
1 2015-05-04 09:29:59 0.05788732 0.0007478696 0.0007478545 0.09633803 -0.0446830986 3533.518 274079.9 -0.0006432937 
2 2015-05-04 10:00:00 0.04948394 0.0006362707 0.0006362707 0.07586009 0.0088016055 2416.431 187953.1 0.0000000000 
3 2015-05-04 10:30:00 0.05554795 0.0007142532 0.0007142532 0.06417808 -0.0002739726 3245.574 252422.0 0.0000000000 
4 2015-05-04 10:59:59 0.04863014 0.0006194244 0.0006194244 0.08434442 0.0024951076 3563.401 279503.9 0.0000000000 
5 2015-05-04 11:30:00 0.05761986 0.0007319037 0.0007319037 0.07851027 0.0154965753 2010.943 158429.1 -0.0006339144 
6 2015-05-04 12:00:00 0.04957627 0.0006285051 0.0006285051 0.07025424 0.0070762712 1819.908 143546.0 0.0000000000 
Variables not shown: vol_30_sum (dbl), vol_30_mean (dbl), p_return_sqr (dbl), p_return_mean (dbl), Lim_or_out (dbl), 
    closing_price (dbl), closing_vol (dbl) 

łaskawie pomóc w rozwiązaniu tego błędu.

+0

Co masz na myśli przez "kiedy to samo jest drukowane za pomocą funkcji write.xlsx"? Czy robisz 'print (write.xlsx (...))'? Czy jest to błąd, gdy wywołujesz 'write.xlsx (...)'? Czy możesz podać powtarzalny przykład? –

+0

Dane wyjściowe drukowane są za pomocą: write.xlsx (q1, file = paste0 (adres pliku "," _ 6 "," .xlsx "), sheetName =" Sheet1 ", col.names = TRUE, row.names = FALSE, append = TRUE) –

+0

Czy mógłbyś podać [przykład odtwarzalny] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? Również twój "dput danych. ramka "nie wygląda jak coś, co wyprodukowałaby' dput (my.dataframe) ', czy możesz spojrzeć na' class (my.dataframe) 'i potwierdzić, że (tylko) klasa to klasa" data.frame "? –

Odpowiedz

25

Nadal nie powtarzalne przykład, ale ze swojego class(q1) wydaje się, że q1 jest tbl_df (rodzaj dataframe że pakiet dplyr produkuje), natomiast write.xlsx oczekuje data.frame.

Spróbuj podać write.xlsx zwykłego data.frame zgodnie z oczekiwaniami. na przykład

write.xlsx(as.data.frame(q1), ...) 

Oto reproducible example (to znaczy można skopiować i wkleić do swojej sesji R odtworzyć błąd + fix).

library(dplyr) 
iris2 <- tbl_df(iris) 
class(iris2) # like yours 
# [1] "tbl_df"  "tbl"  "data.frame" 

# Now let's try to write to XLSX using command as mentioned in your comments 
library(xlsx) 
write.xlsx(iris2, file='test.xlsx', sheetName="Sheet1", col.names=TRUE, row.names=FALSE, append=TRUE) 
# Error in .jcall(cell, "V", "setCellValue", value) : 
# method setCellValue with signature ([D)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 
# ^--- we can reproduce your error. This is the point of a reproducible example, so we can see if our fixes work for you. 

Spróbujmy teraz naprawić, upewniając się, że plik write.xlsx otrzymuje dane.frame, a nie tbl_df!

write.xlsx(as.data.frame(iris2), file='test.xlsx', sheetName="Sheet1", col.names=TRUE, row.names=FALSE, append=TRUE) 
# huzzah! 
1

Wygląda na to, że jest błąd związany z formatem daty/czasu w pierwszej kolumnie (datownik). Jeśli konwertujesz pierwszą kolumnę na znak, powinna działać. Tak, można zmienić pierwszą kolumnę do

q1[,1] <- as.character(q1[,1]) 

i spróbuj ponownie ...

0

znajdę to się dzieje podczas grupowania zmiennych z dplyr. Jeśli zakończysz łańcuch z%>% rozgrupować() wydaje się, aby rozwiązać

Powiązane problemy