R中的向量循环概念

R中的向量循环概念,r,R,我试图理解R中向量循环的工作原理。我有两个向量 c(2,4,6) 及 我想使用rep()生成如下输出: [1] 2 4 6 4 8 12 根据我对?rep()的理解,有次和每个参数执行我尝试的操作 > rep(c(2,4,6), times=2) [1] 2 4 6 2 4 6 但我也看到第一个向量乘以第二个向量的第一个元素,然后乘以第二个向量的第二个元素。不确定如何继续。您可以使用: rep(c(2,4,6), 2) * rep(c(1,2), each=3) #[1]

我试图理解R中向量循环的工作原理。我有两个向量

c(2,4,6) 

我想使用
rep()
生成如下输出:

[1]  2  4  6  4  8 12
根据我对
?rep()
的理解,有
每个
参数执行我尝试的操作

> rep(c(2,4,6), times=2)
[1] 2 4 6 2 4 6
但我也看到第一个向量乘以第二个向量的第一个元素,然后乘以第二个向量的第二个元素。不确定如何继续。您可以使用:

rep(c(2,4,6), 2) * rep(c(1,2), each=3)
#[1]  2  4  6  4  8 12
或与汽车回收:

c(2,4,6) * rep(c(1,2), each=3)
#[1]  2  4  6  4  8 12
可使用备选方案
外部

c(outer(c(2,4,6), c(1,2)))
#[1]  2  4  6  4  8 12
c(crossprod(t(c(2,4,6)), c(1,2)))
#[1]  2  4  6  4  8 12
还可以使用
crossprod

c(outer(c(2,4,6), c(1,2)))
#[1]  2  4  6  4  8 12
c(crossprod(t(c(2,4,6)), c(1,2)))
#[1]  2  4  6  4  8 12
%*%

c(c(2,4,6) %*% t(c(1,2)))
#[1]  2  4  6  4  8 12

这是可行的,尽管可能有一种更简单的方法:
as.vector(mapply(函数(x)x*c(2,4,6),1:2))
注意,正确的回收要求回收的元素是整数倍。例如,
rnorm(6,1:6,1:2)
将生成6个常规实现,平均值为1:6,标准差为1:2,重复3次。您可以执行
c(1,2)%x%c(2,4,6)
,请参见
?kronecker
矩阵乘法
%*%
也可以给您期望的结果