r - 如何在 R 中创建一个将 X 和 X 倍数的嵌套 for 循环?
问题描述
所以我正在尝试做一个嵌套的 for 循环,它将 1:100 和 1:100(10,000 种可能的组合)倍增。所以 1*1, 1*2 ... 1* 100。一旦达到 100,我希望它重复,所以 2*1, 2*2, 2*100。
注意:我需要使用 for 循环来执行此操作
table<-matrix(ncol=3, nrow=100*100)
for (i in 1:100) {
for (z in 1:100){
answer<-i*z
table[i,] <- c(i,z,answer)
}
}
这是我上面的代码。这似乎是一个简单的修复,但我错过了一些东西..
解决方案
我们可以用outer
out <- outer(1:100, 1:100)
它可以转换为 3 列 data.frame 与melt
library(reshape2)
out2 <- melt(out)
在for
循环中,我们需要
for (i in 1:100) {
for (z in 1:100){
answer<-i*z
table[i, z] <- answer
}
}
table[i, z] <- answer
在哪里
table <- matrix(nrow = 100, ncol = 100)
检查输出
all.equal(out, table)
#[1] TRUE
如果我们需要'i','z'
out2 <- transform(expand.grid(i = 1:100, z = 1:100), answer = i * z)
或与crossing
library(tidyr)
library(dplyr)
crossing(i = 1:100, z = 1:100) %>%
mutate(answer = i * z)
# A tibble: 10,000 x 3
# i z answer
# <int> <int> <int>
# 1 1 1 1
# 2 1 2 2
# 3 1 3 3
# 4 1 4 4
# 5 1 5 5
# 6 1 6 6
# 7 1 7 7
# 8 1 8 8
# 9 1 9 9
#10 1 10 10
# … with 9,990 more rows
或者在一个for
循环中
table1 <- c()
for(i in 1:100) {
for(z in 1:100){
table1 <- rbind(table1, c(i, z, i * z))
}
}
推荐阅读
- python - 在 Django 中查询中间表
- html - 视频不会在移动设备上自动播放
- javascript - webpack 插件可以预处理 TypeScript 文件吗?
- haskell - Haskell:没有因使用“打印”而产生(Show Exp)的实例
- reactjs - 从选定的复选框设置数组
- python - 当我着陆时,跳跃动画仍在播放
- python - 使用 .float_val 提取 tensorflow-serving grpc 请求结果的性能非常慢
- android - 用户向上滚动时无法单击 SliverPersistentHeader 上的操作按钮
- ray - `remote functions` 和 `remote actor` 如何在 ray 库的底层以分布式方式运行?
- javascript - 在这个 Twilioquest 练习中我做错了什么?(JavaScript 初学者)