我正在尝试构建一个嵌套循环,该循环将返回N = 1,i = 1,j = 1,然后N = 1,i = 1,j = 2 ...直至N = 5,i = 12, j = 5。我将其保存到数据框。有谁知道如何做?我也很想添加第四个循环,例如k,该循环将是1到5,这样循环将在数据帧中保存N,i,j和k,它们的所有组合(1、1、1、1,直至5,12,5,5)。谢谢!
P <- data.frame(PValue = numeric(), NValue=numeric())
P2 <- list()
for (N in 1:5){
for (i in 1:12){
for (j in 1:5) {
P[i, 1] <- N
P[i, 2] <- i
P[i, 3] <- j
}
}
P2[[N]] <- P
}
final <- do.call(rbind, P2)
答案 0 :(得分:0)
我不太了解您为什么要为此问题处理loop
,但是下面是解决方法,
my_vector <- vector()
for (N in 1:5){
for (i in 1:12){
for (j in 1:5) {
for (k in 1:5) {
my_vector[1] <- N
my_vector[2] <- i
my_vector[3] <- j
my_vector[4] <- k
if(N==1 & i==1 & j==1 & k==1) {
df <- my_vector
}else{
df <- rbind(df,my_vector)
}
}
}
}
}
tail(df)
[,1] [,2] [,3] [,4]
my_vector 5 12 4 5
my_vector 5 12 5 1
my_vector 5 12 5 2
my_vector 5 12 5 3
my_vector 5 12 5 4
my_vector 5 12 5 5
如果愿意,您可以分配rownames
和colnames
。但是,expand.grid
函数是解决此问题的简单方法。
my_df <- expand.grid(1:5,1:12,1:5,1:5)
tail(my_df)
Var1 Var2 Var3 Var4
1495 5 11 5 5
1496 1 12 5 5
1497 2 12 5 5
1498 3 12 5 5
1499 4 12 5 5
1500 5 12 5 5