采用以下示例,我创建了一个data.frame df1
。
对于每次迭代,我们会混合df1
的顺序并将其重命名为df2
然后我们将条件应用于df2,即:
df2[1,1] == 1
时,我们希望对df2
进行分组,以便我们删除df2$B==125
的情况,如果df2[1,1] != 1
,则不执行任何操作df2[1,1] == 3
的第二步,我们希望对df2
进行分组,以便我们删除df2$B==108
的情况,如果df2[1,1] != 1
,则不执行任何操作< / LI>
但我不知道如何编码这一步。有人可以填补下面的空白。 当我们运行代码时,输出应该成功返回9到10之间的值。
require(doParallel)
set.seed(123)
A <- 1:10
B <- c(106,144,131,107,125,108,105,119,112,127)
df1 <- data.frame(A,B)
m <- 100
Sample = foreach(i=c(1:m)) %do%{
#shuffle order of data
df2 <- df1[sample(1:nrow(df1)), ]
df2
# when df2[1,1] == 1 then remove df2$B==125, otherwise leave df2 as is
# or
# when df2[1,1] == 3 then remove df2$B==108, otherwise leave df2 as is
length(df2$A)
}
答案 0 :(得分:1)
试试这段代码:
require(doParallel)
set.seed(123)
A <- 1:10
B <- c(106,144,131,107,125,108,105,119,112,127)
df1 <- data.frame(A,B)
m <- 100
Sample = foreach(i=c(1:m)) %do%{
#shuffle order of data
df2 <- df1[sample(1:nrow(df1)), ]
df2
if (df2[1,1]==1) df2 <- df2[-which(df2$B==125),]
if (df2[1,1]==3) df2 <- df2[-which(df2$B==108),]
print(nrow(df2))
}