使用 R 中的列表和数据帧进行并行处理

问题描述 投票:0回答:1

我正在尝试在 R 中并行化以下过程:

df <- data.frame(col1 = c("A","B","C"), col2 = c("D","E","F"))
mylist <- list(c(1:4),c(1:7),c(1:5))
df$col3 <- NA
df$col4 <- NA
for(i in 1:nrow(df))
{
   df$col3[i] = list(mylist[[i]])
   df$col4[i] = length(unlist(df$col3[i]))
}

我通过修改上面的代码并使用以下方法尝试了以下方法:

library(future.apply)
func <-function(n)
{
   for(i in n)
   {
      df$col3[i] = list(mylist[[i]])
      df$col4[i] = length(unlist(df$col3[i]))
   }
}
future_lapply(1:3,func)

上述方法对我来说不起作用。我尝试搜索 stackexchange 但找不到相关答案。请帮忙。预先感谢。

注意:

  1. 上面的 mylist 和 df 是玩具示例,df 可以包含 10^7 行。
  2. 我使用的是windows环境和R版本4.2.0
r parallel-processing r-future
1个回答
0
投票

你可以这样做。它会给您

col4
中的值,但您不会更新
df

library(future.apply)

func <-function(n) {
    df$col3[[n]] <- list(mylist[[n]])
    df$col4[[n]] <- length(unlist(df$col3[[n]]))
}
future_lapply(1:3,func)
© www.soinside.com 2019 - 2024. All rights reserved.