2015-12-23 16 views
12

Biểu dữ liệu có thể nhìn thấy được với bất kỳ lỗi nào. Nhưng khi cùng được in bằng cách sử dụng write.xlsx fucnction của gói XLSX, nó đưa ra lỗi.Lỗi khi in dữ liệu. Khung trong excel sử dụng gói XLSX trong R

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

Các dput của data.frame trông giống như:

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) 

Vui lòng giúp đỡ trong việc giải quyết lỗi này.

+0

Ý của bạn là gì khi "cùng được in bằng chức năng write.xlsx"? Bạn đang làm 'print (write.xlsx (...))'? Hoặc là lỗi chỉ khi bạn gọi 'write.xlsx (...)'? Bạn có thể cung cấp một ví dụ tái sản xuất được không? –

+0

Đầu ra được in bằng: write.xlsx (q1, file = paste0 (Địa chỉ tệp "," _ 6 ",". Xlsx "), sheetName =" Sheet1 ", col.names = TRUE, row.names = FALSE, append = TRUE) –

+0

Bạn có thể cung cấp [ví dụ tái sản xuất] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) không? Ngoài ra, "dữ liệu của bạn". frame "không giống như cái gì đó' dput (my.dataframe) 'sẽ tạo ra, bạn có thể nhìn vào' class (my.dataframe) 'và xác nhận rằng lớp (only) là" data.frame "? –

Trả lời

25

Vẫn không có ví dụ tái sản xuất, nhưng từ bạn class(q1) dường như q1 là một tbl_df (các loại dataframe rằng gói dplyr sản xuất) trong khi write.xlsx hy vọng một data.frame.

Hãy thử cung cấp write.xlsx một đồng bằng data.frame như mong đợi. ví dụ.

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

Dưới đây là một reproducible example (ví dụ: bạn có thể sao chép-dán nó vào phiên R của bạn để tạo lại lỗi + sửa chữa).

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. 

Bây giờ, hãy thử khắc phục bằng cách đảm bảo rằng write.xlsx nhận dữ liệu.không phải là tbl_df!

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

Dường như có lỗi với định dạng Ngày/Giờ của cột đầu tiên (Dấu thời gian). Nếu bạn chuyển đổi cột đầu tiên thành ký tự, cột sẽ hoạt động. Vì vậy, bạn có thể thay đổi cột đầu tiên của bạn để

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

và thử lại ...

0

Tôi tìm thấy điều này xảy ra khi nhóm các biến với dplyr. Nếu bạn kết thúc một chuỗi với%>% ungroup(), nó xuất hiện để giải quyết

Các vấn đề liên quan