Установка имен в `...` для функции R - PullRequest
0 голосов
/ 14 июня 2019

Предположим, что аргументы функции foo произвольно определены как ....

Если имена аргументов a = c("ESL", "prof"), а их значения a1.vales = 1:8 и a2.vales = 0:7:

как я могу заставить: foo(a[1] = a1.vales, a[2] = a2.vales) работать так же, как: foo("ESL" = a1.vales, "prof" = a2.vales)?

P.S. setNames может помочь здесь?

foo <- function(n = 2:9, ...){

  data.frame(n = n, ...)
}

## Function argument names and values:
a = c("ESL", "prof")
a1.vales = 1:8
a2.vales = 0:7

## Example of use: 
foo(a[1] = a1.vales, a[2] = a2.vales)    # Fails?
foo("ESL" = a1.vales, "prof" = a2.vales) # Works

1 Ответ

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

Для решения вашей текущей проблемы существует обходной путь:

foo <- function(n = 2:9, ...){
  args <- list(...)
  setNames(data.frame(c(list(n), args[-1])), c("n", args[[1]]))
}

foo(n = 2:9, a, a1.vales, a2.vales)

  n ESL prof
1 2   1    0
2 3   2    1
3 4   3    2
4 5   4    3
5 6   5    4
6 7   6    5
7 8   7    6
8 9   8    7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...