【问题标题】:Reading through all excel file sheets and performing a for loop阅读所有excel文件表并执行for循环
【发布时间】:2019-11-23 10:24:54
【问题描述】:

我正在尝试读取 excel 文件中的所有工作表并对 X__9 和 X__11 列求和。我的 foo 循环只返回一张纸的上述操作,我不知道如何解决这个问题。

library(readxl)
sheets <- excel_sheets("C:/Users/Victor/Downloads/transacties-3.xlsx")
path <- "C:/Users/Victor/Downloads/transacties-3.xlsx"

for(i in sheets){
  result <-  data.frame()
  data <- read_excel(path,sheet=i)
  data <- data[10:12]
  data$X__9 <- as.numeric(data$X__9)
  data$X__11 <- as.numeric(data$X__11)
  result <- rbind(result,data.frame(data))
  sum <- apply(result,1,sum,na.rm=T)
  return(sum)
}

【问题讨论】:

标签: r for-loop


【解决方案1】:

您应该在循环外定义结果数据框。

result <-  data.frame()
for(i in sheets){
  data <- read_excel(path,sheet=i)
  data <- data[10:12]
  data$X__9 <- as.numeric(data$X__9)
  data$X__11 <- as.numeric(data$X__11)
  result <- rbind(result,data.frame(data))
}

sum1 <- sum(result$X__9)
sum1 <- sum(result$X__11)

【讨论】:

  • 没有用。出于某种原因,在运行代码后,我在我的环境中看到 i 作为值“表 1”。所以我相信循环并没有遍历工作表中的所有值。
  • @kevinn-12 我已经更新了答案,你不必在循环内返回。检查答案
  • 这不是我要找的。问题仍然存在,因为循环只遍历第一张纸。
猜你喜欢
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
相关资源
最近更新 更多