Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中输入多张Excel表格_R_For Loop_Readxl_Openxlsx - Fatal编程技术网

在R中输入多张Excel表格

在R中输入多张Excel表格,r,for-loop,readxl,openxlsx,R,For Loop,Readxl,Openxlsx,我试图在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(dat

我试图在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)
}
工作表#将所有excel工作表导入列表

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

l欢迎来到SO!这个问题缺少很多信息,所以不太可能为你带来任何成果,Aditya hande。你说:“它向我发出警告,但没有输出”。。。也许你可以和我们分享这些警告?几乎可以肯定的是,它们表明或与您可能遇到的任何问题有关。缺少这些,我们没有警告,没有错误,也没有样本数据,所以不太可能有人能给你很多。参考文献:,和。
优先于
-
。将(i in 2:长度(图纸)-1)的
更改为(i in 2:(长度(图纸)-1))的
。检查
2:5-1
2:(5-1)
之间的差异,以获取说明。@GregorThomas Hi感谢您的输入,我已经尝试过了,但是抛出错误。错误是“%closure”类型的对象不可子集。请看我在问题中添加的错误。这是使用函数名(如变量)时的常见错误。比如,
mean
是一个函数名,如果我使用
mean[1]
则会出现错误,因为我无法设置函数。但是如果我先说
mean=1:3
,那么有一个非函数平均值,那么
mean[1]
就起作用了。因此,当您执行
data[i]
时,可能没有名为
data
的对象,因此R尝试使用内置函数
data()
。可能在循环开始之前放置一个
data=list()
,以创建一个数据对象。您还应该将
data[i]
更改为
data[[i]]
-使用双括号访问列表中的单个元素。@GregorThomas非常感谢它确实有帮助:)。我也补充了我的答案。
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]]))]
}