您好運行以下幾行,有點驚訝。混亂在線:與範圍界定/參數傳遞混淆R
好了,所以我創建了一個清單:
> x<-list()
分配1是由 「A」
> x$a<-1
我問看什麼是X索引的元素
> x
$a
[1] 1
yup so far so so well
接下來我宣佈一個函數,將傳遞給它,並像分配索引列表「一」我只是分配給指數「b」值2
> foo<-function(xx) {
+ xx["b"]<-2
+ print(xx)
+ }
我調用該函數與X - 我喜歡我所看到 現在,我的想法是,列表對象得以通過(通過引用在C,當你做& x)和它破壞性修改
> foo(x)
$a
[1] 1
$b
[1] 2
現在我打印X功能的體外 - 但很驚訝,看不到b
> x
$a
[1] 1
>
我讀取舀和參數傳遞文檔,但無法弄清楚這一點。在調用函數體之前列表是深度還是淺度複製?
你需要'assign'或'x <-foo(x)' – akrun
,所以你說我需要返回修改後的列表並重新分配它。這不會是一個優雅的解決方案,因爲我正在寫圖形漫步者......讓我看看分配。再次感謝 – user975917
'現在我的想法是列表對象被傳遞(通過引用如C)'。我第一次聽到C通過引用傳遞。順便說一句,R是一種*功能*編程語言。函數的參數被複制,它們的修改不會被保留在函數範圍之外。 – nicola