Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将向量值函数应用于向量。结果出乎意料_R_Vectorization - Fatal编程技术网

R 将向量值函数应用于向量。结果出乎意料

R 将向量值函数应用于向量。结果出乎意料,r,vectorization,R,Vectorization,在马特洛夫的《R编程的艺术》中,他使用下面的函数(z12)来演示向量值函数的使用 我的问题是:当将函数应用到1:8,为什么返回1 2 3 4。。。1 4 9 16…而不是1、1、2、4、3、9…?毕竟,在return语句中,z^2不是紧挨着z吗?我们可以将函数改为 z12 <- function(z) c(rbind(z, z^2)) z12(x) #[1] 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 z12我们可以将函数更改为 z1

在马特洛夫的《R编程的艺术》中,他使用下面的函数(
z12
)来演示向量值函数的使用


我的问题是:当将函数应用到
1:8
,为什么返回
1 2 3 4。。。1 4 9 16…
而不是
1、1、2、4、3、9…
?毕竟,在return语句中,
z^2
不是紧挨着
z
吗?

我们可以将函数改为

z12 <- function(z) c(rbind(z, z^2))
z12(x)
#[1]  1  1  2  4  3  9  4 16  5 25  6 36  7 49  8 64

z12我们可以将函数更改为

z12 <- function(z) c(rbind(z, z^2))
z12(x)
#[1]  1  1  2  4  3  9  4 16  5 25  6 36  7 49  8 64
z12c()
是串联运算符。它将两个向量首尾相连。你能行

c(1, 2)
# [1]  1  2
c(1:3, 9:11)
# [1]  1  2  3  9 10 11
因此,您定义的函数正在运行

c(1:8, (1:8)^2)
# [1]  1  2  3  4  5  6  7  8  1  4  9 16 25 36 49 64
因此,
c()
将向量扩展后放在一起。不是在扩展发生时。

c()
是串联运算符。它将两个向量首尾相连。你能行

c(1, 2)
# [1]  1  2
c(1:3, 9:11)
# [1]  1  2  3  9 10 11
因此,您定义的函数正在运行

c(1:8, (1:8)^2)
# [1]  1  2  3  4  5  6  7  8  1  4  9 16 25 36 49 64

因此,
c()
将向量扩展后放在一起。不是因为扩展正在进行。

另一种选择是使用
rep
和回收

zN <-  function(x) rep(x, each=2)^c(1:2)
或者,按照所需的顺序

zN2 <-  function(x) x^rep(1:2, each=length(x))
zN2(1:8)
 [1]  1  2  3  4  5  6  7  8  1  4  9 16 25 36 49 64

zN2另一种选择是使用
rep
和回收

zN <-  function(x) rep(x, each=2)^c(1:2)
或者,按照所需的顺序

zN2 <-  function(x) x^rep(1:2, each=length(x))
zN2(1:8)
 [1]  1  2  3  4  5  6  7  8  1  4  9 16 25 36 49 64

zN2谢谢您的解释。我不知道为什么我期望函数在向量的单个元素上运行。再次感谢:)谢谢你的解释。我不知道为什么我期望函数在向量的单个元素上运行。再次感谢:)