programing

R의 XLSX 패키지를 사용하여 Excel에서 data.frame을 인쇄하는 중 오류가 발생했습니다.

powerit 2023. 4. 23. 11:36
반응형

R의 XLSX 패키지를 사용하여 Excel에서 data.frame을 인쇄하는 중 오류가 발생했습니다.

데이터 프레임은 에러 없이 표시됩니다.그러나 같은 것을 쓰기로 인쇄하는 경우.XLSX 패키지의 xlsx 기능에서 오류가 발생합니다.

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

data.frame의 dput은 다음과 같습니다.

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)

이 오류 해결을 도와주시기 바랍니다.

아직 재현 가능한 예는 없지만class(q1)인 것 같다q1는 입니다.tbl_df(데이터 프레임의 종류)dplyr패키지 생성)에 비해write.xlsx기대하다data.frame.

기부해 보세요write.xlsx평원data.frame예상대로요. 예컨대.

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

재현 가능한 예를 다음에 나타냅니다(즉, R 세션에 복사하여 붙여넣기하여 버그 + 수정을 재현할 수 있습니다).

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.

이제 그 글을 확실히 써서 고쳐봅시다.xlsx는 tbl_df가 아닌 data.frame을 가져옵니다.

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

dplyr로 변수를 그룹화할 때 이 현상이 발생합니다.체인을 %>% ungroup()으로 종료하면 해결되는 것처럼 보입니다.

첫 번째 열(Timestamp)에 날짜/시간 형식의 버그가 있는 것 같습니다.첫 번째 열을 문자로 변환하면 작동합니다.따라서 첫 번째 열을 다음과 같이 변경할 수 있습니다.

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

다시 시도...

언급URL : https://stackoverflow.com/questions/34428041/error-in-printing-data-frame-in-excel-using-xlsx-package-in-r

반응형