You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R语言openxlsx包将不同长度的列表写入Excel工作表?

解决openxlsx包写入多长度列表到Excel的问题

你的代码仅输出最后一行内容,核心问题是for循环的迭代范围错误:length(ListofLists)返回数值4,而for (r in length(ListofLists))只会让r取到4这一个值,导致仅执行了一次写入操作,自然只有第6行(4+2)有内容。

修复后的完整代码

library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb,sheetName = "options")

List1 <- list("Boo","yay")
List2 <- list("Sok","mmm", "Woohoo")
List3 <- list("A", "B","C","D","E","F")
List4 <- list("We","Are","Not","Alone")
ListofLists <- list(List1,List2,List3,List4)
filetosave <- "C:/Users/Username/Desktop/mylist.xlsx"

writeRow <- function(r)
{
  openxlsx::writeData(wb, "options", ListofLists[[r]], startCol = 2, startRow = r+2,  
          colNames = FALSE, rowNames = FALSE)
}

# 修复循环范围:遍历所有子列表的索引
for (r in seq_along(ListofLists))
{writeRow(r)}

saveWorkbook(wb, file = filetosave, overwrite = TRUE)

关键修复说明

  • 将for (r in length(ListofLists))替换为for (r in seq_along(ListofLists)):seq_along(ListofLists)会生成1到4的连续整数序列,确保每个子列表都被写入对应的行(第3到第6行)。
  • 也可以使用for (r in 1:length(ListofLists)),但seq_along在列表为空的场景下更安全,不会出现1:0这类无效序列的问题。

内容的提问来源于stack exchange,提问作者Peter King

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 10:07:10