2015-12-23 9 views
12

Der Datenrahmen ist ohne Fehler sichtbar. Aber wenn dasselbe mit write.xlsx fucnction des Pakets XLSX gedruckt wird, gibt es den Fehler.Fehler beim Drucken von data.frame in Excel mit dem XLSX-Paket in R

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

Die dput der data.frame wie folgt aussieht:

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) 

bitte bei der Lösung dieses Fehlers helfen.

+0

Was meinen Sie mit "wenn dasselbe mit write.xlsx Funktion gedruckt wird"? Machst du 'print (write.xlsx (...))'? Oder ist der Fehler nur beim Aufruf von 'write.xlsx (...)'? Können Sie ein reproduzierbares Beispiel geben? –

+0

Die Ausgabe wird gedruckt mit: write.xlsx (q1, Datei = paste0 (Dateiadresse "," _ 6 "," .xlsx "), Blattname =" Blatt1 ", Spaltennamen = TRUE, Reihe.Name = FALSCH, Append = TRUE) –

+0

Können Sie ein [reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) zur Verfügung stellen? Auch Ihre "Ausgabe der Daten. Frame "sieht nicht aus wie etwas, das' dput (mein.dataframe) 'erzeugen würde, kann man' class (mein.dataframe) 'betrachten und bestätigen, dass die (einzige) Klasse" data.frame "ist? –

Antwort

25

Noch kein reproduzierbares Beispiel, aber von Ihrem class(q1) es scheint, dass q1 ist eine tbl_df (die Art von Datenrahmen, die das dplyr Paket erzeugt), während write.xlsx erwartet ein data.frame.

Versuchen Sie geben write.xlsx eine einfache data.frame, wie es erwartet. z.B.

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

hier ein reproducible example (das heißt Sie es in Ihre R Sitzung copy-paste konnte den Bug + fix zu reproduzieren).

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. 

wir versuchen es jetzt beheben, indem sichergestellt wird, dass write.xlsx eine data.frame bekommt, kein tbl_df!

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

Es scheint, dass es einen Fehler mit dem Datum/Uhrzeit-Format der ersten Spalte (Timestamp) gibt. Wenn Sie die erste Spalte in ein Zeichen umwandeln, sollte es funktionieren. So , können Sie Ihre erste Spalte

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

und versuchen Sie es erneut ändern ...

0

Ich finde dies geschieht, wenn Variablen mit dplyr Gruppierung. Wenn Sie eine Kette mit%>% ungroup() beenden, scheint es zu lösen

Verwandte Themen