偶然我遇到了"[<-"
操作员的奇怪行为.它的行为会有所不同,具体取决于调用的顺序以及我是使用RStudio还是普通的RGui.我将通过一个例子说清楚.
x <- 1:10
"[<-"(x, 1, 111)
x[5] <- 123
Run Code Online (Sandbox Code Playgroud)
据我所知,第一个分配不应该改变x
(或者我可能是错的?),而第二个应该这样做.事实上,上述操作的结果是
x
[1] 1 2 3 4 123 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
但是,当我们以不同的顺序执行这些操作时,结果会有所不同并且x
已经发生变化!意味深长:
x <- 1:10
x[5] <- 123
"[<-"(x, 1, 111)
x
[1] 111 2 3 4 123 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
但它只发生在我使用普通R!在RStudio中,两个选项的行为都是相同的.我在两台机器上检查过它(一台用Fedora,一台用Win7),情况看起来完全一样.我知道'功能'版本("[<-"(x..)
)可能从未使用过,但我很好奇它为什么会发生.谁能解释一下呢?
==========================
编辑:好的,所以从评论我得到的原因是x <- 1:10
类型'整数'和更换后x[5] <- 123
的'双'.但仍然存在为什么RStudio的行为不同的问题?我重新启动R会话,它不会改变任何东西.
对不起,如果可能是一个微不足道的问题,但我想知道是否有一种方法来分配值并简洁地将值打印到控制台.
x <- 1:5; x
Run Code Online (Sandbox Code Playgroud)
我现在是怎么做到的,但我想知道是否有办法在一个声明中做到这一点.谢谢!