R difent大小乘法矩阵

R difent大小乘法矩阵,r,matrix,matrix-multiplication,R,Matrix,Matrix Multiplication,晚安 在Rstudio 将这两个不同大小的矩阵相乘时,我遇到了一个问题,而且情况变得更糟,因为我必须以这样一种方式相乘,即d2$ID=1行中的值必须只与w$sample=1的重复相乘 样本和ID指示的是同一样本 换句话说,从“子集”d2$ID=1开始,每个单个值(“L1”、“ST”、“GR”、“CB”、“HSK”、“DDM”)必须乘以整个“子集”w$sample=1(在本例中为4行,但并不总是),是的,所有值“G2”、“G4”、“G6”、“G8”、“G12” 我已经检查了很多问题,但我无法理解,

晚安

在Rstudio

将这两个不同大小的矩阵相乘时,我遇到了一个问题,而且情况变得更糟,因为我必须以这样一种方式相乘,即d2$ID=1行中的值必须只与w$sample=1的重复相乘

样本和ID指示的是同一样本

换句话说,从“子集”d2$ID=1开始,每个单个值(“L1”、“ST”、“GR”、“CB”、“HSK”、“DDM”)必须乘以整个“子集”w$sample=1(在本例中为4行,但并不总是),是的,所有值“G2”、“G4”、“G6”、“G8”、“G12”

我已经检查了很多问题,但我无法理解,特别是因为大多数信息都是针对相同大小的矩阵

我试着过滤d2中的数据,但是数据集非常大,效率非常低

我是一个初学者,如果你认为这么简单,我至少会感激一个提示。 我有几个像这样的数据集


提前谢谢

这似乎是按要求执行的:

res <- apply(w, 1, function(x){ unclass(
                      outer(as.matrix( x[-1] ), 
                            as.matrix( d2[1, c( "L1", "ST", "GR", "CB", "HSK", "DDM")])))})
str(res)

# result
# num [1:30, 1:22] 1.81 2.64 3.56 4.65 6.28 ...
# - attr(*, "dimnames")=List of 2
#  ..$ : NULL
#  ..$ : chr [1:22] "1" "2" "3" "4" ...

我不认为这是一个信息量很大的错误消息。这两个参数都是数字向量。

这似乎按照要求执行:

res <- apply(w, 1, function(x){ unclass(
                      outer(as.matrix( x[-1] ), 
                            as.matrix( d2[1, c( "L1", "ST", "GR", "CB", "HSK", "DDM")])))})
str(res)

# result
# num [1:30, 1:22] 1.81 2.64 3.56 4.65 6.28 ...
# - attr(*, "dimnames")=List of 2
#  ..$ : NULL
#  ..$ : chr [1:22] "1" "2" "3" "4" ...

我不认为这是一个信息量很大的错误消息。这两个参数都是数值向量。

您希望从
中得到多少值?每个值(“L1”、“ST”、“GR”、“CB”、“HSK”、“DDM”)都必须乘以整个“子集”“w$sample=1
?您有5项和6项。您希望d2的每行有30个值吗?是的,我希望d2的每行有30个值。注:d2的第1行(ID=1)必须乘以与w$sample=1对应的4行,依此类推,因此对于
“您希望从中得到多少值”,每个值(“L1”、“ST”、“GR”、“CB”、“HSK”、“DDM”)必须乘以整个”子集“w$sample=1
?您有5项和6项。您希望d2的每行有30个值吗?是的,我希望d2的每行有30个值。注:d2的第1行(ID=1)必须乘以与w$sample=1对应的4行,以此类推感谢您的时间谢谢您的时间我确实尝试过,但不知何故我做错了,因为它不起作用。我跑:
f你把它分配给一个名字了吗?是的,我分配了,但也和你发到“f谢谢你的时间谢谢你的时间我试过了,但不知为什么我做错了,因为它不起作用。我跑:
f你把它分配给一个名字了吗?是的,我分配了,但也和你发到“f”的完全一样
res <- apply(w, 1, function(x){ unclass(
                      outer(as.matrix( x[-1] ), 
                            as.matrix( d2[1, c( "L1", "ST", "GR", "CB", "HSK", "DDM")])))})
str(res)

# result
# num [1:30, 1:22] 1.81 2.64 3.56 4.65 6.28 ...
# - attr(*, "dimnames")=List of 2
#  ..$ : NULL
#  ..$ : chr [1:22] "1" "2" "3" "4" ...
Error in tcrossprod(x, y) : 
  requires numeric/complex matrix/vector arguments