考虑以下代码:ř替换功能
#rm(list=ls())
x <- 1:5
"[<-"(x, 2:3, value = 9:10)
x
如果我执行所有在同一时间的四行,则x为1 9 10 4 5.如果我逐个执行码,然后最后x会是1 2 3 4 5,原因是什么?
考虑以下代码:ř替换功能
#rm(list=ls())
x <- 1:5
"[<-"(x, 2:3, value = 9:10)
x
如果我执行所有在同一时间的四行,则x为1 9 10 4 5.如果我逐个执行码,然后最后x会是1 2 3 4 5,原因是什么?
如果执行
x <- 1:5
"[<-"(x, 2:3, value = 9:10)
你会看到的输出被取代:
1 9 10 4 5
然而,原值x
不会受到影响(你是不是覆盖它)
因此,如果您执行x
,则会看到其原始值:
1 2 3 4 5
如果我运行在同一时间(我猜你正在使用RStudio)各行,我会看到这个(我想这就是为什么你问)
execute> x <- 1:5
execute> "[<-"(x, 2:3, value = 9:10)
[1] 1 9 10 4 5
execute> x
[1] 1 9 10 4 5
我猜测这是一种奇怪的RStudio行为(可能类似于this one),尽管x
的值完全不受影响。
请注意,如果您更改最后一行,则不会发生。例如。
x <- 1:5
"[<-"(x, 2:3, value = 9:10)
x <- 6:10
execute> x <- 1:5
execute> "[<-"(x, 2:3, value = 9:10)
[1] 1 9 10 4 5
execute> x <- 6:10
execute>
EDITED
有R版本3.3.1和RStudio版本0.99.467运行。
运行三条线将x
的值更改为1 9 10 4 5
。但是,在运行在第一行,然后第二和第三,示出了正确的结果(和x
值不受影响)
execute> x <- 1:5
execute> "[<-"(x, 2:3, value = 9:10)
[1] 1 9 10 4 5
execute> x
[1] 1 2 3 4 5
感谢您的帮助。我也认为x不应该改变,因为没有重新分配。 R工作室可能会搞砸了。 –
无法确认。在任何情况下(R v3.3.1),'x'的值都变为'1 9 10 4 5',无论是在RStudio还是在shell中运行代码。如果这些行按顺序执行或一次执行,也没有区别。 – RHertel
是的,x变成1 9 10 4 5.奇怪。 –
我认为这是1 9 10 4 5任一方式。 – Frank
你究竟是如何执行这些代码?我无法重现您的问题。 – MrFlick
@Frank我在另一台计算机上再试一次,x会是1 2 3 4 5。我认为替换函数不应该直接调用。 –