0

假设我们有以下名为 的数据集data1

id  v1  v2
1   5   0.5
1   4   0.5
1   6   0.5
2   2   0.2
2   3   0.2
2   7   0.2

我的目的是对子集后创建的每个数据进行data1分析id。以下是我不成功的代码。

library(parallel)
library(foreach)
library(doSNOW)

data2 <- list()
foreach(i = 1:length(unique(data1$id))) %dopar% {
  data2[i] <- subset(data1,data1$id==unique(data1$id)[i])
  a <- matrix(ncol = 3, nrow = length(data2[i]$v1)
   for (j in 1:length(data2[i]$v1)) {
         for (k in 1:3) {
            a[j,k] <- 1.5*data2[i]$v2
          }
      }
   return(a)
  }

非常感谢任何帮助。谢谢!

4

1 回答 1

2

你在找split()吗?此函数将根据第二个参数的不同值将您的单个数据框分成数据框列表。这是一个例子:

# Create sample data
data1 <- read.table(header = TRUE, text = '
id  v1  v2
1   5   0.5
1   4   0.5
1   6   0.5
2   2   0.2
2   3   0.2
2   7   0.2')

# Split data into separate data frames
lst <- split(data1, data1$id)

# View resulting list
lst
# $`1`
# id v1  v2
# 1  1  5 0.5
# 2  1  4 0.5
# 3  1  6 0.5
# 
# $`2`
# id v1  v2
# 4  2  2 0.2
# 5  2  3 0.2
# 6  2  7 0.2

一旦进入列表,您通常可以直接或使用应用函数将其发送到分析中。

于 2021-01-30T19:56:38.817 回答