首页 > 解决方案 > R:如何在函数的循环中调用省略号变量中的元素?

问题描述

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

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被识别为数字对象,但在循环内部却找不到它。

标签: rfunctionvariables

解决方案


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

推荐阅读