我使用省略号,因为我想在函数中使用不同数量的变量。我似乎无法循环调用各个元素并在简单的数学运算中使用它们。
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
被识别为数字对象,但是在循环内部却找不到它。
答案 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