Привет, я провел следующие строки и был немного удивлен. Путаница рядный:Путаница с прицелом/параметр, проходящий в R
ИТАК создать список:
> x<-list()
Назначают по 1 как элемент индексируется «а»
> x$a<-1
Я прошу, чтобы посмотреть, что находится в х
> x
$a
[1] 1
yup до сих пор так хорошо
рядом Заявляет функцию, которая будет принимать список, который передается к нему и как присвоения индекса «а» я просто присвоить индекс «б» значение 2
> foo<-function(xx) {
+ xx["b"]<-2
+ print(xx)
+ }
я вызываю функцию с й - Мне нравится то, что я вижу Теперь мое мышление, что объект списка был принят (по ссылке, как и в C, когда вы & х), и это было деструктивно модифицирован
> foo(x)
$a
[1] 1
$b
[1] 2
Сейчас вне тела функции я печать х - но удивлен, не увидев b
> x
$a
[1] 1
>
Я читал scooping и передавал параметры docs, но не мог понять это. Является ли список глубоким или мелким, скопированным до того, как вызывается тело функции?
Вам нужно либо «присваивать», либо «x <- foo (x)» – akrun
, поэтому вы говорите, что мне нужно будет вернуть измененный список и повторно назначить его. Это не было бы изящным решением, потому что я пишу графический ходок ... позвольте мне взглянуть на назначение. Еще раз спасибо – user975917
'Теперь я думаю, что объект списка прошел (по ссылке как на C)'. В первый раз я услышал, что C проходит по ссылке. BTW, R - * функциональный * язык программирования. Копируются аргументы функции, и их модификации не сохраняются вне области действия. – nicola