为啥我们不能循环遍历`...`?

Posted

技术标签:

【中文标题】为啥我们不能循环遍历`...`?【英文标题】: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

【问题讨论】:

【参考方案1】:

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

for(i in list(...))

看看R手册here

【讨论】:

也可以用c包裹起来如c(...) @Remi.b 作为旁注,您实际上可以访问 ... 的特定元素,如 ..1..2 等。对于循环来说不是非常有用,但您会看到从不时作为获得特定项目的捷径。 @joran - 很漂亮,这在?Reserved 中有记录,供那些想知道的人使用。

以上是关于为啥我们不能循环遍历`...`?的主要内容,如果未能解决你的问题,请参考以下文章

Java中foreach为啥不能给数组赋值

为啥在foreach循环中不能修改值类型实例

普通for循环遍历List时调用remove方法,List没有遍历完。为啥?

Python为啥不能用列表遍历来删除列表中的相同的元素呢?

为啥 for 循环不遍历列表中的每个项目?

为啥for循环遍历python中的1个项目? [关闭]