R 矢量计算特定列的乘积
我有一个矩阵,有两种类型的列名:以“min”结尾的列名和以“max”结尾的列名。 例如,该矩阵的第一行和前6列可以是:R 矢量计算特定列的乘积,r,vectorization,R,Vectorization,我有一个矩阵,有两种类型的列名:以“min”结尾的列名和以“max”结尾的列名。 例如,该矩阵的第一行和前6列可以是: M = matrix(c(0.2, 0.3, 0.5, 0.9, 0.7, 0.6), nrow = 1, ncol = 6) colnames(M) = c("a_min", "b_min", "c_min", "a_max", "b_max", "c_max") 我想,对于每一行M,计算所有对列的a_max和a_min,b_max和b_min之差的乘积,依此类推 在上述示
M = matrix(c(0.2, 0.3, 0.5, 0.9, 0.7, 0.6), nrow = 1, ncol = 6)
colnames(M) = c("a_min", "b_min", "c_min", "a_max", "b_max", "c_max")
我想,对于每一行M
,计算所有对列的a_max
和a_min
,b_max
和b_min
之差的乘积,依此类推
在上述示例中,最终产品为:
(0.9-0.2)*(0.7-0.3)*(0.6-0.5) = 0.028.
如何对常规
2N
列和p
行进行矢量化处理?下面是一个基于R的想法
Reduce(`*`, lapply(split.default(M, sub('_.*', '', colnames(M))), diff))
#[1] 0.028
如果你有多行,也就是说,
M这里有一个通过R基的想法
Reduce(`*`, lapply(split.default(M, sub('_.*', '', colnames(M))), diff))
#[1] 0.028
如果您有多行,即M要计算max-min
差异,只需减去矩阵,例如
D <- M[, grep('_max', colnames(M))] - M[, grep('_min', colnames(M))]
要计算max-min
差异,只需减去矩阵,例如
D <- M[, grep('_max', colnames(M))] - M[, grep('_min', colnames(M))]
如果你有多行,计算会如何进行?对于每行,我会有一个数字作为结果如果你有多行,计算会如何进行?对于每行,我会有一个数字作为结果有一行!可能不会想到这个可怕的一行!可能不会想到这一点