[英]Issues with for loops in R
我正在嘗試組合一些 excel 電子表格。 有50個文件。 我希望得到 2:5 的工作表,但有些只有 2:3、2:4 等的工作表 - 這就是我包含 try 函數的原因。 我需要范圍 F6:AZ2183 並且我正在轉置數據。
我遇到的問題是只有最后一個文件保存到數據框 df 中。
我附上了下面的代碼。 如果您有任何想法,我將不勝感激!
另外,我是一個長期潛伏的人,第一次發帖,所以如果我的禮儀不好,我道歉。
df <- data.frame()
for (i in 1:50){
for (j in 2:5) {
try({
df.temp <- t(read_excel((paste0('FqReport',i,'.xlsx')), sheet = j, range ='F6:AZ2183'))
df.temp <- df.temp[rowSums(is.na(df.temp)) != ncol(df.temp), ]
df <- rbind(df, df.temp)
rm(df.temp)
gc()
}, silent = TRUE)
}
}
您可以閱讀每個 excel 文件中可用的工作表,這將避免使用try
。 在循環中增長數據幀也非常低效。 試試這個lapply
方法。
library(readxl)
filename <- paste0('FqReport',1:50,'.xlsx')
df <- do.call(rbind, lapply(filename, function(x) {
sheet_name <- excel_sheets(x)[-1]
do.call(rbind, lapply(sheet_name, function(y) {
df.temp <- t(read_excel(x, y, range ='F6:AZ2183'))
df.temp[rowSums(is.na(df.temp)) != ncol(df.temp), ]
}))
}))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.