【发布时间】:2014-09-01 18:41:18
【问题描述】:
我所说的“替换函数”是指在这个线程What are Replacement Functions in R? 中提到的那些,看起来像'length<-'(x, value) 的那些。当我使用这些函数时,我遇到了一些奇怪的事情。似乎只有当变量按照一定的规则命名时,替换函数才起作用。
这是我的代码:
a <- c(1,2,3)
我将尝试使用以下 3 个替换函数之一更改 a 的第一个元素。
'first0<-' <- function(x, value){
x[1] <- value
x
}
first0(a) <- 5
a
# returns [1] 5 2 3.
第一个效果很好......但是当我更改定义中的参数名称时,
'first1<-' <- function(somex, somevalue){
somex[1] <- somevalue
somex
}
first1(a) <- 9
# Error in `first1<-`(`*tmp*`, value = 9) : unused argument (value = 9)
a
# returns [1] 5 2 3
虽然下面的代码没问题,但它无法工作:
a <- 'first1<-'(a, 9)
a
# returns [1] 9 2 3
其他一些名字也很好用,如果它们类似于x和value,似乎:
'first2<-' <- function(x11, value11){
x11[1] <- value11
x11
}
first2(a) <- 33
a
# returns [1] 33 2 3
这对我来说没有意义。变量的名称真的很重要还是我犯了一些错误?
【问题讨论】:
-
我认为它可能已经传回给
first0,尽管我不确定。好问题。