考慮以下代碼:ř替換功能
#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。我認爲替換函數不應該直接調用。 –