代码之家  ›  专栏  ›  技术社区  ›  dez93_2000

对于每个合并错误,rbind所有变量的长度都应该相同…但它们确实有[R]

  •  0
  • dez93_2000  · 技术社区  · 6 年前

    foreach .combine 要读取的文件夹的任务 Rds 文件和 rbind 将它们合二为一:

    all_dfs <- foreach(j = list.files(pattern = ".Rds"),
     .errorhandling = "pass",
     .combine = rbind,
     .multicombine = TRUE) %dopar% {eachRdsFile <- readRDS(j)}
    

    并获取错误:

    调用合并函数时出错:rbind中的simpleError(deparse.level, …):列表参数无效:所有变量应具有相同的长度

    length ,它们都是一样的(82):

    for (j in list.files(pattern = ".Rds")) {
     eachRdsFile <- readRDS(j)
     print(length(eachRdsFile))}
    

    这个 弗雷奇

    library(parallel)
    library(doMC)
    mycores <- 8
    registerDoMC(cores = mycores)
    testdfs <- foreach(j = 1:206,.errorhandling = "pass",.combine = rbind,.multicombine = TRUE) %dopar% {
      eachdf <- data.frame(A = runif(10), B = runif(10))}
    

    但它很好用。我跑了 弗雷奇 对于1:152,然后加载文件153和 rbound Foreach 在文件153:206上运行良好(206是最后一个文件)。55:206很好(152个文件)。54:206失败(153个文件)。因此,问题可能在于 rbinding 打猎 &燃气轮机=任何物体都可以,很明显。

    编辑:再次感谢Florian Priv对解决问题的帮助。这个问题与我使用电脑有关 writeLines sink print (或 progress bars

    writeLines(c(""), "log.txt")
    all_dfs <- foreach(...){
    sink("log.txt", append = TRUE)
    

    当我输出到list时,发现问题出在sink stack full错误上:

    screenshot

    多亏了你,我终于把它修好了 dmi3kno's answer ,然后继续使用 结合 接近时没有错误。

    0 回复  |  直到 6 年前
        1
  •  2
  •   F. Privé    6 年前

    您可以删除 .combine 获取列表,然后使用 do.call("rbind", your_list) .