将两个数据框中的所有行成对求和并保存到矩阵
sum all rows pairwise in two data frames and save to matrix
我有一个数据框df1和一个数据框df 2
df1
colA colB ...
30 2 ...
3 100 ...
15 9 ...
.. .. ...
df2
colA colB ...
10 200 ...
0 10 ...
55 1 ...
.. .. ...
我想将 df1 的 colA 中的所有行与 df2 中的 colA 相加,其余列依此类推
输出:
df3
colA colB
40 202
3 110
70 10
我想将值填入矩阵
我写过这样的东西:
results <- matrix(NA, ncol=ncol(df1), nrow=nrow(df1))
rownames(results) <- rownames(df1)
colnames(results) <- colnames(df1)
for (i in seq(df1)) {
tempCol1 <- df1[, i]
for (row in rownames(results))
for (j in seq(results)){
results[row,j]<-sum(df1[row, tempCol1 ],
df2[row, tempCol1 ])
}}
它给出了这个错误:
Error in [<-
(*tmp*
, row, j, value = sum(a[row, tempCol1], b[row,
tempCol1])) : subscript out of bounds
做成矩阵并相加。
直接加两个data.frame
也可以。
df1 = data.frame(colA = c(30, 3, 15), colB = c(2, 100, 9))
df2 = data.frame(colA = c(10, 0, 55), colB = c(200, 10, 1))
as.matrix(df1)+ as.matrix(df2)
df1+df2
> as.matrix(df1)+ as.matrix(df2)
colA colB
[1,] 40 202
[2,] 3 110
[3,] 70 10
> df1+df2
colA colB
1 40 202
2 3 110
3 70 10
我们可以做一个常规的 + 来保留矩阵格式并进行元素求和,下面的代码片段将完成工作
df1 <- data.frame (
col1 = c(30, 3, 15),
col2 = c(2, 100, 19)
)
df2 <- data.frame (
col1 = c(30, 3, 15),
col2 = c(2, 100, 19)
)
my_mat1 <- as.matrix(df1)
my_mat2 <- as.matrix(df2)
result = my_mat1 + my_mat2;
你不必为这个问题使用 for loop
。只需将它们加起来:
m = as.matrix(df1 + df2)
我有一个数据框df1和一个数据框df 2
df1
colA colB ...
30 2 ...
3 100 ...
15 9 ...
.. .. ...
df2
colA colB ...
10 200 ...
0 10 ...
55 1 ...
.. .. ...
我想将 df1 的 colA 中的所有行与 df2 中的 colA 相加,其余列依此类推
输出:
df3
colA colB
40 202
3 110
70 10
我想将值填入矩阵 我写过这样的东西:
results <- matrix(NA, ncol=ncol(df1), nrow=nrow(df1))
rownames(results) <- rownames(df1)
colnames(results) <- colnames(df1)
for (i in seq(df1)) {
tempCol1 <- df1[, i]
for (row in rownames(results))
for (j in seq(results)){
results[row,j]<-sum(df1[row, tempCol1 ],
df2[row, tempCol1 ])
}}
它给出了这个错误:
Error in
[<-
(*tmp*
, row, j, value = sum(a[row, tempCol1], b[row, tempCol1])) : subscript out of bounds
做成矩阵并相加。
直接加两个data.frame
也可以。
df1 = data.frame(colA = c(30, 3, 15), colB = c(2, 100, 9))
df2 = data.frame(colA = c(10, 0, 55), colB = c(200, 10, 1))
as.matrix(df1)+ as.matrix(df2)
df1+df2
> as.matrix(df1)+ as.matrix(df2)
colA colB
[1,] 40 202
[2,] 3 110
[3,] 70 10
> df1+df2
colA colB
1 40 202
2 3 110
3 70 10
我们可以做一个常规的 + 来保留矩阵格式并进行元素求和,下面的代码片段将完成工作
df1 <- data.frame (
col1 = c(30, 3, 15),
col2 = c(2, 100, 19)
)
df2 <- data.frame (
col1 = c(30, 3, 15),
col2 = c(2, 100, 19)
)
my_mat1 <- as.matrix(df1)
my_mat2 <- as.matrix(df2)
result = my_mat1 + my_mat2;
你不必为这个问题使用 for loop
。只需将它们加起来:
m = as.matrix(df1 + df2)