我在R中有一个例程可以接受可变数量的参数,我需要调用这个例程并传递一个解压缩的列表。在Python中,我会进行如下操作:
lst = [1,2,3]
my_func(*lst)
在R中,等效的语法是什么?
更具体地说,我正在使用shiny,并尝试创建一个动态条目列表。
这是代码。
server <- function(input, output) {
applist <- c(
a(href="#", class="list-group-item",
h4(class="list-group-item-heading", "Entry 1"),
p(class="list-group-item-text", "Description")
),
a(href="#", class="list-group-item",
h4(class="list-group-item-heading", "Entry 2"),
p(class="list-group-item-text", "Description")
))
output$applist = renderUI(
div(class="list-group", ... applist)
)
}
...
并传递任意数量的参数,但是在 R 中没有**
的字典。这将是相同的方式。 - akrundiv(class="list-group", ... applist)
吗?还是我以为你有一个函数。如果这是一个函数的参数,也许你需要使用do.call("functionname", arguments_to_function_in_a_list)
。 - akrundo.call(fun, list_of_args)
(基本 R)。或尝试这个(tidyverse)。 - IceCreamToucanl <- list(x = 1, y = 2, z = 3)
时,这个可以工作`f <- function(x, y, z){ x + y + z };do.call(f, l)但这个不行
f <- function(...){ x + y + z };do.call(f, l)而我认为后者是这个问题的关键。不确定是否有一种方法可以修改使其工作。您可以通过在定义的第一行添加
inputs <- list(...)并使用
inputs $ x`等来修改函数,但也许有更简单的方法? - IceCreamToucanc(...)
。对于列表,它是list(...)
,但是您可以使用as.list(c(...))
将向量转换为列表。 - akrun