R:如何在函数的循环内从省略号变量中调用元素?

时间:2019-06-12 00:11:49

标签: r function variables

我使用省略号,因为我想在函数中使用不同数量的变量。我似乎无法循环调用各个元素并在简单的数学运算中使用它们。

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 :(得分:0)

只需将向量设置为一开始就等于参数,然后可以通过索引引用它们。在您使用过的所有...处,我都替换为索引向量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