【问题标题】:Input Multiple sheets of Excel in R在R中输入多张Excel
【发布时间】:2020-09-18 03:04:54
【问题描述】:

我正在尝试在 R 中使用 for 循环放入多张 excel 表并进行一些估算。我写的代码如下,

sheet <- getSheetNames("market_latest.xlsx")
for (i in 2:length(sheet)-1){
data[i] <- read.xlsx("market_latest.xlsx",sheet = sheet[i],fillMergedCells = TRUE)
col[i] <- colnames(data[i])
colnames(data[i]) <- as.character(unlist(data[i][1,]))
col[i+1] <- colnames(data[i])
colnames(data[i]) <- as.character(unlist(data[i][1,]))
data[i] <- data[i][, !duplicated(colnames(data[i]))] 
write.xlsx(data[i],file="sampleop.xlsx",sheetName="Sheet1", 
           col.names=TRUE, row.names=FALSE, append=FALSE)
}

插补部分正在工作,所以我没有问题。但是当我运行代码时,它会向我发出警告但没有输出。我想使用 2 张到 n-1 张 excel,请让我知道我哪里错了。 错误图片添加在下面。 enter image description here

【问题讨论】:

  • 欢迎来到 SO!这个问题缺少很多的信息,所以它不太可能对你有任何成果,Aditya hande。您说:“它向我发出警告但没有输出” ...也许您可以与我们分享这些警告?它们几乎可以肯定地表明或与您可能遇到的任何问题有关。缺少这一点,我们没有警告、错误和样本数据,所以任何人都不太可能给你太多。参考:stackoverflow.com/q/5963269minimal reproducible examplestackoverflow.com/tags/r/info
  • : 优先于 -。将for (i in 2:length(sheet)-1) 更改为for (i in 2:(length(sheet)-1))。查看2:5 - 12:(5 - 1) 之间的区别以获取说明。
  • @GregorThomas 嗨,感谢您的输入,我已经尝试过了,但它的抛出错误。错误是“闭包”类型的“对象”不是子集。请查看我在问题中添加的错误。
  • 当你使用像变量这样的函数名时,这是一个常见的错误。就像,mean 是一个函数名,如果我这样做mean[1],则会出现该错误,因为我无法子集函数。但是如果我先说mean = 1:3,那么有一个非函数均值,那么mean[1] 有效。所以可能当您执行data[i] 时,您没有名为data 的对象,因此R 尝试使用内置函数data() 代替。也许在循环开始之前放一个data = list() 来创建一个数据对象。您还应该将data[i] 更改为data[[i]] - 使用双括号来访问列表的单个元素。
  • @GregorThomas 非常感谢它确实有帮助:)。我也添加了我的答案。

标签: r for-loop readxl openxlsx


【解决方案1】:

#将所有excel表格导入列表

lst <- lapply(2:10, function(i) read.xlsx("file.xlsx", sheet = i, fillMergedCells = TRUE))

#使用for循环删除/输入所需格式的数据

for(i in 1:9){
  col <- colnames(lst[[i]])
  colnames(lst[[i]]) <- as.character(unlist(lst[[i]][1,]))
  assign(paste0("head_",i),colnames(lst[[i]]))
  lst[[i]] <- lst[[i]][-1,]
  colnames(lst[[i]]) <- as.character(unlist(lst[[i]][1,]))
  lst[[i]] <- lst[[i]][, !duplicated(colnames(lst[[i]]))]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 2019-10-18
    • 1970-01-01
    • 2017-03-25
    • 2018-07-08
    • 2015-01-15
    • 2013-02-20
    相关资源
    最近更新 更多