【发布时间】:2019-08-12 13:19:28
【问题描述】:
我在 R 中有一个接受可变数量参数的例程,我需要调用这个例程并传递一个解压缩列表。在python中我会做
lst = [1,2,3]
my_func(*lst)
R 中的等价语法是什么?
更具体地说,我正在使用闪亮,我正在尝试创建一个动态的条目列表
这是代码。
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)
)
}
【问题讨论】:
-
您可以使用 3 个点
...并传递任意数量的参数,但 R 中没有**的字典。方式相同 -
这是
div(class="list-group", ... applist)你正在使用的地方还是我认为你有一个功能。如果是函数的参数,可能需要do.call("functionname", arguments_to_function_in_a_list) -
你可以使用
do.call(fun, list_of_args)(base R)。或者试试this (tidyverse)。 -
我没有作为答案发布,因为
l作为l <- 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等来修改函数,但也许有更简单的方法? -
@StefanoBorini 在这里,您提供了
vector,即c(...)。对于list,它是list(...),但您可以使用as.list(c(...))将矢量转换为光照
标签: r