Проблемы с forloops внутри функции R - PullRequest
0 голосов
/ 26 июня 2019

У меня проблема с функцией следующего вида:

fun.name <- function(x,y) {
    a<-x
    b<-y
    for (i in c(a, b)){
        i<-i+1
        print (i)
    }
    print(a)
    print(b)
}

fun.name(1, 2)

Результат

[1] 2
[1] 3
[1] 1
[1] 2

Тот же результат получается, если я не создаю a и b.и я просто держу х и у (fun.name <- function(x,y) { for (i in c(a, b))...).Я не могу понять это поведение.То, что я хотел, было функцией, которая добавляет один к каждому аргументу и печатает результаты.Почему цикл не изменяет переменные a и b, когда он определен внутри функции?Я предполагаю, что это проблема окружения, и что я не понял природу аргументов функции.Спасибо за любые предложения.

1 Ответ

2 голосов
/ 26 июня 2019

Я действительно ожидаю увидеть ваш текущий вывод. Вот ваш код, отформатированный, с пояснениями в виде комментариев:

fun.name <- function(x,y) {
    a <- x
    b <- y
    for (i in c(a, b)) {   # i in (1, 2)
        # first iteration: i = 2, print 2
        # second iteration: i = 3, print 3
        i <- i+1
        print(i)
    }
    print(a)  # prints 1 (a was only assigned once)
    print(b)  # prints 2 (same reason as above)
}

fun.name(1, 2)

Нет никаких изменений в a и b после их начальных назначений внутри функции. Но даже если бы произошли изменения, переменные a и b даже не были бы видимыми вне области действия функции.

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