【问题标题】:Python-like unpacking of numeric value in R [duplicate]R中类似Python的数值解包[重复]
【发布时间】:2026-01-04 09:35:01
【问题描述】:

在 Python 中,可以这样做:

>>> a, b, c = (1, 2, 3)
>>> a
1
>>> b
2
>>> c
3

有没有办法在 R 中做到这一点,如下所示?

> a, b, c = c(1, 2, 3)

【问题讨论】:

  • 不,没有。

标签: r iterable-unpacking


【解决方案1】:

您可以使用[<-在列表中执行此操作

e <- list()

e[c('a','b','c')] <- list(1,2,3)

或者在data.table中使用:=

library(data.table)
DT <- data.table()
DT[, c('a','b','c') := list(1,2,3)]

有了这两个(列表),您就可以使用list2env 复制到全局(或其他)环境

list2env(e, envir = parent.frame())

a
## 1
b
## 2
c
## 3

但一般不会在环境中创建对象。

【讨论】:

  • 很好...不知道list2env - 虽然我可以看到它被滥用而不是被使用。
  • 实际上,我不会使用list2env()——它在 R 语言中看起来相当生硬和不自然——但答案仍然具有启发性和全面性。另外,我学会了如何使用列表!谢谢!
【解决方案2】:

也许它看起来很愚蠢,但我会这样做:

v <- list(a=0,b=0,c=0)
v[] <- c(1,2,3)
 v
$a
[1] 1

$b
[1] 2

$c
[1] 3

【讨论】: