Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用xlsx包向xlsx文件添加顶部空白行?_R_Xlsx - Fatal编程技术网

R 如何使用xlsx包向xlsx文件添加顶部空白行?

R 如何使用xlsx包向xlsx文件添加顶部空白行?,r,xlsx,R,Xlsx,我想在我创建的xlsx文件的顶部添加两个空行 到目前为止,我已经尝试: library("xlsx") fn1 <- 'test1.xlsx' fn2 <- 'test2.xlsx' write.xlsx(matrix(rnorm(25),5),fn1) wb <- loadWorkbook(fn1) rows <- getRows(getSheets(wb)[[1]]) for(i in 1:length(rows)) rows[[i]]$setRowNu

我想在我创建的xlsx文件的顶部添加两个空行

到目前为止,我已经尝试:

library("xlsx")
fn1 <- 'test1.xlsx'
fn2 <- 'test2.xlsx'

write.xlsx(matrix(rnorm(25),5),fn1)

wb <- loadWorkbook(fn1)
rows <- getRows(getSheets(wb)[[1]])
for(i in 1:length(rows)) 
    rows[[i]]$setRowNum(as.integer(i+1))

saveWorkbook(wb,fn2)
库(“xlsx”)

fn1我对您试图对for循环执行的操作感到有点困惑,但是:

您可以创建一个虚拟对象,其列数与wb相同,然后使用rbind()连接虚拟对象和wb以创建fn2

fn1 <- 'test1.xlsx'
wb <- loadWorkbook(fn1)
dummy <- wb[c(1,2),]
# set all values of dummy to whatever you want, e.g. "NA" or 0
fn2 <- rbind(dummy, wb)
saveWorkbook( fn2)

因此xlsx包实际上与java库接口,以便引入和修改工作簿。read.xlsx和write.xlsx函数是方便的包装器,可以在R中读取和写入数据帧,而无需手动编写代码,自己使用java对象解析单个单元格和行。loadWorkbook和getRows函数允许您访问实际的java对象,然后可以使用这些对象修改单元格样式等内容

但是,如果您只想在输出电子表格之前向其添加一个空行,那么最简单的方法是在导出数据框之前向其添加一个空行(如Chris所述)。您可以在代码中使用以下变量来完成此操作:

library("xlsx")
fn1 <- 'test1.xlsx'
fn2 <- 'test2.xlsx'

# I have added row.names=FALSE because the read.xlsx function
# does not have a parameter to include row names
write.xlsx(matrix(rnorm(25),5),fn1,row.names=FALSE)

# If you read your data back in using the read.xlsx function
# you will have a data frame rather than a series of java object references
wb <- read.xlsx(fn1,1)

# Now that we have a data frame we can add a blank row at the top
wb<-rbind.data.frame(rep("",5),wb)

# Then we write to the file using the same function as before
write.xlsx(wb,fn2,row.names=FALSE)
库(“xlsx”)

fn1我在wb[c(1,2),]中得到了错误
error:类型为'S4'的对象是不可子集的
P.S.。我试图将循环添加到每行的行号中,使其向下显示两行,但它只是删除了所有行。听起来wb不是作为数据帧加载的,而是作为列表或向量加载的。尝试str(wb),您可能必须在添加rowsGreat答案之前强制wb!不幸的是,行名仍然写在最上面一行,后面有两个空行。行名称前需要两行空白