我想从一个矩阵(S_t
)的每一行中减去一个向量(S_0
),不幸的是,由于行数是100万,计算我的for循环花费了很多时间。
i <- 1
n <- 1000000
X_t <- data.frame(matrix(0, nrow = n, ncol = 10))
for (i in i:n) {
X_t[i,] <- S_t[i, ] - S_0
}
S_0
是长度为10的向量S_t
是包含来自先前计算的值的维度为N × 10的 Dataframe
我的第一个想法是把S_0
转换成一个n x 10
维的矩阵(那么所有的行都是相同的)。也许从一个矩阵中减去一个矩阵会更快?不幸的是,如果不使用另一个for循环,我就找不到有效的方法。
此外,我尝试了以下方法:data.frame(matrix(S_0, nrow = n, ncol = 10))
但是输出并不是我所期望的,因为每行中数字的顺序都混在一起了。
2条答案
按热度按时间js4nwp541#
您可以使用
col
转置矢量并保持S_t
的类型另一个选择是使用
sweep
,也保留类型。另一个选项是使用
Map
。基准(感谢@Maël提供模板)
xdnvmnnf2#
可以使用
t
两次:基准测试:
t
速度最快