【问题标题】:Why can't we loop over `...`?为什么我们不能循环遍历`...`?
【发布时间】:2015-12-02 07:33:23
【问题描述】:

为什么以下不起作用?

f = function(...) for (i in ...) print(i)
f(1:3)
# Error in f(1:3) : '...' used in an incorrect context

虽然这工作正常

f = function(...) for (i in 1:length(...)) print(...[i])
f(1:3)
# [1] 1
# [1] 2
# [1] 3

【问题讨论】:

    标签: r function arguments parameter-passing


    【解决方案1】:

    它不起作用,因为 ... 对象类型在解释代码中不可访问。您需要将对象捕获为 nongkrong 显示的列表:

    for(i in list(...))
    

    看看R手册here

    【讨论】:

    • 也可以用c包裹起来如c(...)
    • @Remi.b 作为旁注,您实际上可以访问 ... 的特定元素,如 ..1..2 等。对于循环来说不是非常有用,但您会看到从不时作为获得特定项目的捷径。
    • @joran - 很漂亮,这在?Reserved 中有记录,供那些想知道的人使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2023-01-05
    • 2016-10-22
    相关资源
    最近更新 更多