我在使用时注意到以下内容'[<-'
。我成功地替换了元素,但没有将元素附加到向量。
例子:
VarX <- integer()
VarX[1] <- 11
`[<-`(VarX, 2, 22)
VarX
# [1] 11
# Expected the value of VarX to be:
# [1] 11 22
# Also tried:
`[<-`(VarX, i=2, value=22)
VarX
# [1] 11
但是,如果索引处已经有一个值,则该值会被替换。
VarX <- integer()
VarX[1] <- 11
VarX[2] <- 99
VarX
# [1] 11 99
`[<-`(VarX, 2, 22)
VarX
# [1] 11 22
我只是语法错误,还是如预期的那样?任何进一步了解这里发生的事情将不胜感激。
请注意,除了更好地理解语言之外,这里没有具体的目标。
关于@Roland 和@Dason 评论的更新。
该行为似乎与最初分配对象值的方式有关。例如,当分配给VarX
is的值1:2
与[<-c(1, 2)
的行为时,会给出不同的结果,如下所示:(VarX, 2, 22)
### 更改未保存到 VarX
rm(VarX) # actually ran: rm(list=ls(all=TRUE))
VarX <- 1:2
VarX
# [1] 1 2
`[<-`(VarX, 2, 22)
# [1] 1 22
VarX
# [1] 1 2
### 更改已保存到 VarX
rm(VarX) # actually ran: rm(list=ls(all=TRUE))
VarX <- c(1, 2)
VarX[2] <- 2
VarX
# [1] 1 2
`[<-`(VarX, 2, 22)
# [1] 1 22
VarX
# [1] 1 22
> sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base