R中的向量循环概念
我试图理解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]
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
矩阵乘法%*%
也可以给您期望的结果