将列表转换为“两个或多个对象” R 中的参数

发布于 2024-10-31 18:30:17 字数 316 浏览 1 评论 0原文

我必须在 R 中调用一个函数,该函数将“2 个或更多对象”作为输入,因此函数定义为:

function(..., all = TRUE, <其他命名参数>)

其中...被定义为2个或更多对象

问题是我的对象位于列表中,并且我根据我想要做的事情使用不同数量的对象。因此,如果我的列表有 3 个元素,我必须这样做:

function(list[[1]], list [[2]], list[[3]])

我该怎么做一般来说,无论列表中的元素数量如何?

I have to call a function in R that takes "2 or more objects" as an input, so the function definition is:

function(..., all = TRUE, <other named parameters>)

where ... is defined as 2 or more objects

The issue is I have is that my objects are in a list, and I am working with a different number of objects according to what I want to do. So if my list has 3 elements for example I would have to do:

function(list[[1]], list [[2]], list[[3]])

How can I do that generically, regardless of the number of element in my list ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

命比纸薄 2024-11-07 18:30:17

您可以使用 do.call,因为它接受参数列表并将它们应用于函数。例如,对于 rbind :

X <- list(A=1:3,B=4:6,C=7:9)
do.call(rbind,X)

  [,1] [,2] [,3]
A    1    2    3
B    4    5    6
C    7    8    9

请注意,如果您需要额外的参数,您也应该将它们添加到列表中。参见例如:

X <- list(A=list(A1=1:2,A2=3:4),B=list(B1=5:6,B2=7:8))

do.call(c,X)      # Returns a list
do.call(c,X,recursive=TRUE)  # Gives an error
do.call(c,c(X,list(recursive=TRUE)))

A.A11 A.A12 A.A21 A.A22 B.B11 B.B12 B.B21 B.B22 
    1     2     3     4     5     6     7     8 

You can use do.call, as that takes a list of arguments and applies them on function. Eg for rbind :

X <- list(A=1:3,B=4:6,C=7:9)
do.call(rbind,X)

  [,1] [,2] [,3]
A    1    2    3
B    4    5    6
C    7    8    9

Mind you, if you need extra arguments, you should add them to the list as well. See eg :

X <- list(A=list(A1=1:2,A2=3:4),B=list(B1=5:6,B2=7:8))

do.call(c,X)      # Returns a list
do.call(c,X,recursive=TRUE)  # Gives an error
do.call(c,c(X,list(recursive=TRUE)))

A.A11 A.A12 A.A21 A.A22 B.B11 B.B12 B.B21 B.B22 
    1     2     3     4     5     6     7     8 
久而酒知 2024-11-07 18:30:17

一个例子会很有帮助,但我很确定您正在寻找 do.call

do.call(function, c(list, list(all=TRUE, <other named parameters>)))

An example would be helpful, but I'm pretty sure you're looking for do.call:

do.call(function, c(list, list(all=TRUE, <other named parameters>)))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文