无法创建空向量并在R中追加新元素

use*_*935 28 r

我刚刚开始学习R并且遇到一个令我相当困惑的问题.我的目标是创建一个空向量并向其追加元素.看起来很简单,但我在stackoverflow上看到的解决方案似乎不起作用.

以机智,

>     a <- numeric()
>     append(a,1)
[1] 1
>     a
numeric(0)
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我做错了什么.有人想帮新手吗?

Mat*_*erg 41

append做一些与你的想法有些不同的事情.见?append.

特别要注意的是,append它不会修改其参数.它返回结果.

你想要的功能c:

> a <- numeric()
> a <- c(a, 1)
> a
[1] 1
Run Code Online (Sandbox Code Playgroud)

  • @ user1935935请记住,R是一种函数式编程语言:函数(通常)没有副作用.如果要修改任何对象,则必须始终通过赋值"捕获"结果. (3认同)

小智 5

您的a向量不是通过引用传递的,因此在修改它时您必须将其存储回来a.您无法访问a并希望更新它.

您只需将返回值分配给向量,就像Matt所做的那样:

> a <- numeric()
> a <- append(a, 1)
> a
[1] 1
Run Code Online (Sandbox Code Playgroud)

马特是正确的,c()虽然你的使用append()很好,但更好(击键次数更少,用途更广泛).