附加分配新值的函数

时间:2016-08-31 22:10:43

标签: arrays r

我正在尝试创建一个不返回值但直接扩展第一个变量的函数Append。目前,要将y附加到x

x = append(x,y)

我希望能够做到

Append(x,y)

得到相同的结果。我首先想到的是像

这样的东西
Append = function(a,b,VarName) assign(VarName,append(a,b), envir = .GlobalEnv)
Append(x,y,"x")

它有效,但必须传递原始变量的名称是非常不满意的。有更好的解决方案吗?

2 个答案:

答案 0 :(得分:5)

由于您正在进行此操作以学习,可能更类似于R的就地修改方法是替代功能

=SPLIT(A1,": ",FALSE)

用作

`append_to<-` = function(x, ..., value)
    append(x, ..., values=value)

导致

x = 1:5
append_to(x) <- 5:1
y = 1:5
append_to(y, after=3) <- c(3:1, 1:3)

答案 1 :(得分:1)

这非常不合情理但是:

Append <- function(x, y) {
  assign(deparse(substitute(x)),append(x,y), envir = .GlobalEnv)
}

所以你可以这样做:

x <- 1:5

y <- 6

Append(x, y)

x # has a 6 at the end

编辑:另一位卡尔在评论中指出了这一点