R: Как я могу вызвать элементы из моих переменных elipsis внутри цикла в функции? - PullRequest
1 голос
/ 12 июня 2019

Я использую elipsis, потому что я хочу использовать переменное количество переменных в моей функции. Я не могу назвать отдельные элементы в цикле и использовать их в простых математических операциях.

tst <- function(...) {
  print(..1)
  q = 1 + ..1
  print(q)
  for (i in 1:3) {
    val <- get(paste0("..", i))
    print(val)
    s = 1 + val  
  }
}

Если я запускаю tst(1, 3, 4) Я ожидаю, что получу как

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

Вместо этого я получаю

[1] 1

Ошибка в get (paste0 ("..", i)): объект '..1' не найден

Это говорит мне о том, что вне цикла ..1 распознается как числовой объект, но внутри цикла он не может его найти.

1 Ответ

0 голосов
/ 12 июня 2019

Просто установите вектор равным аргументам в начале, тогда вы можете ссылаться на них по индексу.Везде, где вы использовали ..., я заменил вектор индексации val[[]]:

tst <- function(...) {
  val <- c(...)
  print(val[[1]])
  q = 1 + val[[1]]
  print(q)
  for (i in 1:3) {
    print(val[[i]])
    s = 1 + val[[i]]  
  }
}

Вывод:

> tst(1, 3, 4)
[1] 1
[1] 2
[1] 1
[1] 3
[1] 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...