我对某些函数中省略号 (...
) 的使用感到困惑,即如何将包含参数的对象作为单个参数传递。
在 Python 中,它被称为“解包参数列表”,例如
>>> range(3, 6) # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args) # call with arguments unpacked from a list
[3, 4, 5]
例如,在 R 中,您有使用省略号的函数 file.path(...)
。我希望有这样的行为:
> args <- c('baz', 'foob')
> file.path('/foo/bar/', args)
[1] 'foo/bar/baz/foob'
相反,我得到
[1] 'foo/bar/baz' 'foo/bar/foob'
其中 args
的元素未同时“解包”和求值。 R 是否有相当于 Python 的 *arg
?
最佳答案
语法并不那么漂亮,但这可以解决问题:
do.call(file.path,as.list(c("/foo/bar",args)))
do.call
接受两个参数:一个函数和用于调用该函数的参数列表。
关于list - 在 R 中解压省略号的参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3414078/