【发布时间】:2020-11-23 14:51:22
【问题描述】:
我对使用 R 很陌生,我正在尝试创建一个生成许多表的循环。
我有两个表 A(64 列)和 B(147 列),行数相等。我需要将 A 的每一列分别与完整的表 B 相乘 --> 得到 64 个表。所以 A[,1] * B、A[,2] * B、A[,3] * B 等等。
尽管这看起来很简单,但我不知道该怎么做。
【问题讨论】:
我对使用 R 很陌生,我正在尝试创建一个生成许多表的循环。
我有两个表 A(64 列)和 B(147 列),行数相等。我需要将 A 的每一列分别与完整的表 B 相乘 --> 得到 64 个表。所以 A[,1] * B、A[,2] * B、A[,3] * B 等等。
尽管这看起来很简单,但我不知道该怎么做。
【问题讨论】:
你可以使用
results = vector(length = 64, mode = 'list')
for (i in 1:64) {
results[[i]] = B[1:nrow(A),]*A[,i]
}
【讨论】:
您可以将 lapply 用作单行代码。这是一个例子。请注意,lapply 函数将 df1 的每一列乘以 df2:
m1 <- 1:10
m2 <- 2 * m1
m3 <- 3 * m1
df1 <- data.frame(m1, m2, m3)
> df1
m1 m2 m3
1 1 2 3
2 2 4 6
3 3 6 9
4 4 8 12
5 5 10 15
6 6 12 18
7 7 14 21
8 8 16 24
9 9 18 27
10 10 20 30
df2 <- df1
dfs <- lapply(df1, function(x) x * df2) # replace df1 and df2 with your dataframes.
> dfs
$m1
m1 m2 m3
1 1 2 3
2 4 8 12
3 9 18 27
4 16 32 48
5 25 50 75
6 36 72 108
7 49 98 147
8 64 128 192
9 81 162 243
10 100 200 300
$m2
m1 m2 m3
1 2 4 6
2 8 16 24
3 18 36 54
4 32 64 96
5 50 100 150
6 72 144 216
7 98 196 294
8 128 256 384
9 162 324 486
10 200 400 600
$m3
m1 m2 m3
1 3 6 9
2 12 24 36
3 27 54 81
4 48 96 144
5 75 150 225
6 108 216 324
7 147 294 441
8 192 384 576
9 243 486 729
10 300 600 900
【讨论】: