r - 嵌套 For 循环数据存储
问题描述
我正在尝试构建一个嵌套循环,它将返回 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)
解决方案
我真的不明白你为什么要处理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
推荐阅读
- mysql - 当第一个案例出现时,Sql 两个 multique 唯一忽略
- julia - 如何从文本中提取数据的特定部分(块)
- scalamock - 如何模拟一个接受参数并验证它的类?
- c# - 如何在shutdown()之后再次调用scheduler.Start()?(quartz.net 3.0.2 和 C#)
- iframe - 使用窗口或全局范围将 Redux 存储共享到多个 iframe
- windows - 命令在 cmd 中运行的时间限制
- python - 如何通过 CMD 使用用户输入向字典中添加新的详细信息
- sapui5 - 如何在 QUnit 测试的函数内设置控件的宽度?
- python - 遍历 DataFrame 分类列以创建子图
- html - 角度升级后 class="js-dropdown" 和 class="js-dropdown-menu" 坏了