我正在尝试使用来自全球环境的数据框填充对象wb
(正式班级工作簿XLConnect)中的现有工作表
我有一个数据框名称列表 - dataframe_list
和工作表名称列表 - sheetsname
,两者都是字符向量
如果wb
中的姓名和dataframe_list
中的工作表sheetsname
的名称相等,我已创建了一个循环来填充wb
中的相应工作表
我的问题是,当我运行循环时,特别是data=dataframe_list[k]
,循环使用名称而不是具有相应名称的数据框。
希望你帮忙
for(k in 1:length(dataframe_list)) {
for(i in 1:length(sheetsname)) {
if (dataframe_list[k]==sheetsname[i]) {
writeWorksheet(wb,data=dataframe_list[k],sheet=as.character(dataframe_list[k]),startRow = 49,
startCol = 3, header = FALSE)
}}
}
答案 0 :(得分:2)
要从名称中返回实际数据框,而不仅仅是名称本身,请使用get
。如在
writeWorksheet(wb, data = get(dataframe_list[k]),
sheet=as.character(dataframe_list[k]), startRow = 49,
startCol = 3, header = FALSE)
注意,未经测试,因为这不是一个完整的可重复示例
答案 1 :(得分:0)
XLConnect的writeWorksheet
已经过矢量化,因此您可以提供list
data.frame
个和工作表名称的向量,如下所示:
# Collect data.frames in a list
dfs <- lapply(dataframe_list, get)
writeWorksheet(wb, data = dfs, sheet = sheetnames, ...)
这里不需要for循环。