我正在尝试创建一个不返回值但直接扩展第一个变量的函数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")
它有效,但必须传递原始变量的名称是非常不满意的。有更好的解决方案吗?
答案 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
编辑:另一位卡尔在评论中指出了这一点