首页 > 解决方案 > 有没有一种更快的方法可以将一个数据帧的列与其他数据帧的行相加而没有循环

问题描述

我正在尝试将数据框列(App_table)的 x 行与另一个数据框行(numeric_col_data)的 x 列相加。我目前已经使用循环完成了这项工作,但由于数据帧很大(~2M 行),因此需要数小时来计算。有没有更快的方法来完成同样的事情。

      for (j in 1:nrow(Weighted_Scenario_table)) {
        Weighted_Scenario_table[j,i] <- sum(App_table[,i]*numeric_col_data[j,])
      }
    }

标签: rloopsdataframe

解决方案


我想您可以先将数据帧转换为矩阵,然后应用矩阵产品,如下所示

Weighted_Scenario_table <- as.matrix(numeric_col_data) %*% as.matrix(App_table)

推荐阅读