首页 > 解决方案 > R相当于python星解包?

问题描述

我在 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)
  )
}

标签: r

解决方案


由 OP 发布。

这是我解决的方法。usingdo.call可以解决问题,但您必须注意,python 中的列表与 R 中的列表不同。R 中的列表更类似于字典和列表的混合。

  applist <- list(
      class="list-group",
      a(href="#", class="list-group-item"),
      a(href="#", class="list-group-item")
  )

  output$applist = renderUI(do.call(div, applist))

请注意 applist 如何同时包含命名条目class和非命名条目。正如我所说,混合动力车。然后do.call进行“解包”,但 applist 的内容随后作为命名或非命名参数分发。它与 python 的工作方式不同,其中命名和非命名总是分开的。


推荐阅读