Наименование аргумента функции R sigm2 = sigm2_prior? - PullRequest
1 голос
/ 08 июля 2011

Я просмотрел документацию R и не смог найти подсказки для этого. Таким образом, проблема в том, что кажется, что l $ sigm2 также назначается, когда назначается l $ sigm2_prior. R ведет себя так, потому что их похожие имена? Есть ли способ обойти это?

Вызов функции:

l $ sigm2 не назначается, если я изменю имя l $ sigm2_prior на l $ ранее.

lik_gaussian(lik=lik[[1]],sigm2_prior=pn[[1]], debug=TRUE);

функция:

lik_gaussian <-function(...){
l <- list(...);
inputarray <- NULL;
if(!(length(l$lik)==0)){
        inputarray <- c(l$lik); 
    }
if(!(length(l$sigm2)==0)){
                 inputarray <- c(inputarray, l$sigm2); 
    }   
if(!(length(l$sigm2_prior)==0)){
        inputarray <- c(inputarray,l$sigm2_prior); 
    }
print(inputarray);
return(inputarray)
}

Заранее спасибо.

1 Ответ

7 голосов
/ 08 июля 2011

Оператор '$' использует частичное совпадение. То есть, если вы оцените l$sigm2, оно также будет соответствовать l$sigm2_prior. Чтобы использовать точное совпадение, вам нужно использовать '[[' или и имя объекта в виде строки:

 l[['sigm2_prior']]

'[[' отличается от '$' тем, что для аргумента exact установлено значение TRUE по умолчанию. Се также:

?'$'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...