开发者社区 问答 正文

如何将函数内部的结果存储到相同的Excel工作表中?

我有for循环列出多个excel工作表,读取它们,进行一些处理的过程,理想情况下,我希望将结果输出存储到同一excel文件/工作表中。

所需的输出是qs

块引用

     files <- list.files(path = "V:/_190718AA_ascii", pattern = 
  "*.xlsx", full.names = T)

df.list <- lapply(files, read_excel,col_names=FALSE) kClusters=5 for (m in df.list) {

qs[m]<- quantile(m[px[,,1,1]],probs=c(0,0.025,0.05,0.1,0.25,0.5,0.75,0.9,0.95,0.975,1))

write.xlsx(qs[m],"V:/_ORG/080-DOZP/BO-P2/DOZPLL/Esma/uqs.xlsx",sheet=m) m <- m+1

      }

它仅从1 m而不是4给出重用。

展开
收起
被纵养的懒猫 2019-10-22 17:03:24 826 分享 版权
阿里云 AI 助理回答

根据您的需求,您希望在R语言环境中使用for循环遍历多个Excel工作表,对每个工作表进行处理后,将结果输出到同一个Excel文件的不同工作表中。但目前遇到的问题是,写入操作似乎只从某个特定的索引m(例如m=1)开始,而非预期的从所有处理过的m值进行。这里没有直接引用给定的知识库内容,因为它们主要涉及SQL、PL/SQL以及DataWorks和Tablestore的用法,与您的R语言环境和Excel操作不直接相关。不过,我可以提供一个基于您描述问题的解决方案思路。

解决方案

确保您的循环逻辑正确地迭代了所有需要处理的工作表,并且每次迭代时都能正确地指定目标工作表名称。以下是一个简化的示例代码框架,展示如何实现这一过程:

# 假设df.list是一个包含所有数据框的列表,每个元素对应一个Excel工作表的内容
df.list <- list()  # 此处应填充实际读取的Excel工作表数据

# 初始化一个空列表用于存储处理后的数据框
qs <- list()

# 假设您有m个工作表需要处理
for (m in 1:length(df.list)) {
    # 对每个数据框df.list[[m]]进行所需处理,然后将其存入qs
    qs[[m]] <- processDataFrame(df.list[[m]])  # 这里processDataFrame是您自定义的数据处理函数

    # 将处理后的数据框写入到Excel文件的第m个工作表中
    write.xlsx(qs[[m]], "V:/_ORG/080-DOZP/BO-P2/DOZPLL/Esma/uqs.xlsx", sheetName = m)
}

# 注意:上述代码片段中的"processDataFrame"函数需替换为您的实际数据处理逻辑。

关键点说明

  • 循环迭代:确保循环变量m能够遍历所有工作表的索引。在这个例子中,我们通过1:length(df.list)来实现。
  • 数据处理:在循环体内,对每个工作表(df.list[[m]])应用相应的数据处理逻辑,然后将处理结果保存到列表qs中。
  • 输出到Excel:使用write.xlsx函数,每次循环都把当前处理好的数据框写入到指定的Excel文件的不同工作表中,通过sheetName = m参数动态指定工作表名。

如果您的代码仅从索引1开始写入而不是覆盖所有处理过的工作表,可能是因为循环控制或工作表命名/索引上的逻辑错误。请检查循环范围是否正确包含了所有工作表,以及在调用write.xlsx时是否正确地指定了每个工作表的名称或索引。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答