如何在R中声明一个零向量

Pat*_*ceG 47 r

我想这是微不足道的,但我找不到如何在R中声明一个零向量.

例如,在Matlab中,我会写:

X = zeros(1,3);
Run Code Online (Sandbox Code Playgroud)

Thi*_*rry 67

你有几个选择

integer(3)
numeric(3)
rep(0, 3)
rep(0L, 3)
Run Code Online (Sandbox Code Playgroud)

  • 我还要添加`seq(0,0,length.out = 3)`或`as.vector(matrix(0,nrow = 3))`:) (7认同)
  • @Thierry是的,当然不是.我只是在开玩笑,并希望列出"有趣"的方法来实现相同的结果. (6认同)
  • @nicola的解决方案效率不高.`seq()`需要比`numeric`长4.6倍,`as.vector(matrix())`3.5倍.`rep`需要的时间要长1.2倍. (4认同)

小智 16

您还可以使用该matrix命令创建一个包含n行和m列的矩阵,并用零填充.

matrix(0, n, m)
Run Code Online (Sandbox Code Playgroud)


989*_*989 6

replicate 是另一种选择:

replicate(10, 0)
# [1] 0 0 0 0 0 0 0 0 0 0

replicate(5, 1)
# [1] 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)

要创建矩阵:

replicate( 5, numeric(3) )

#     [,1] [,2] [,3] [,4] [,5]
#[1,]    0    0    0    0    0
#[2,]    0    0    0    0    0
#[3,]    0    0    0    0    0
Run Code Online (Sandbox Code Playgroud)


Rqu*_*est 5

X <- c(1:3)*0
Run Code Online (Sandbox Code Playgroud)

也许这不是将向量初始化为零的最有效方法,但这只需要记住函数c(),这是教程中经常引用的声明向量的常用方法。

作为旁注:对于从其他语言学习 R 的人来说,在 R 中执行相同操作的大量函数可能令人兴奋,正如前面的答案所证明的那样。