簡體   English   中英

R 中的 for 循環問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM