2014-01-07 2 views
0

xlsx를 사용하여 여러 장의 통합 문서를 만들고 각 페이지마다 하이퍼 링크 열을 추가하고 싶습니다. 나는 꽤 정직xlsx에서 addHyperlink를 사용하여 많은 하이퍼 링크를 추가하십시오.

wb <- createWorkbook() 
sheet1 <- createSheet(wb, "Sheet1") 
rows <- createRow(sheet1, 1:10) # 10 rows 
cells <- createCell(rows, colIndex=1:8) # 8 columns 
cell <- cells[[1,1]] 
address <- "http://poi.apache.org/" 
setCellValue(cell, "click me!") 
addHyperlink(cell, address) 
saveWorkbook(wb, "foo.xlsx") 

설명서를 참조의 예를 따라,하지만 난 setCellValue()에 다음 표시 이름의 벡터를 addHyperlink()에 하이퍼 링크의 벡터를 전달하고 싶습니다. 이 작업을 수행하는 깨끗한 방법이 있나요 오류

Error in cells[[1:2, 1]] : attempt to select more than one element 

을 제공하거나, XLSX cell을 통해 루프로 설정되어

... 
cell <- cells[[1:2,1]] #I am assuming that cells is a matrix like object with 
         #[[rows, columns]] 

: 나는 노력이 효과?

최저 샘

답변

0
나는를 사용하여 A for 루프를 말할 것

:

library(xlsx) 
wb <- createWorkbook() 
sheet1 <- createSheet(wb, "Sheet1") 
rows <- createRow(sheet1, 1:10) # 10 rows 
cells <- createCell(rows, colIndex=1:8) # 8 columns 
links <- c("http://stackoverflow.com/questions/20978461/add-many-hyperlinks-using-addhyperlink-in-xlsx", 
      "http://stackoverflow.com/users/1599501/sam") 
names(links) <- c("add many hyperlinks using addHyperlink in xlsx", 
        "User: Sam") 
for (row in 1:length(links)) { 
    setCellValue(cells[[row,1]], names(links)[row]) 
    addHyperlink(cells[[row,1]], links[row]) 
} 
saveWorkbook(wb, "foo.xlsx") 
shell.exec("foo.xlsx") 
+0

내가 루프를 피하기 위해 기대했다, 당신의 코드가 작동하지만, 행이 긴 경우, 그것은 많이 느려 및 경향 메모리를 비좁 힙니다 (적어도 R이 너무 많이 실행되면 메모리 오류가 발생합니다) – Sam

관련 문제