类似Python的解压缩R中的数值

bra*_*zzi 11 r iterable-unpacking

在Python中,可以这样做:

>>> a, b, c = (1, 2, 3)
>>> a
1
>>> b
2
>>> c
3
Run Code Online (Sandbox Code Playgroud)

有没有办法在R中进行,如下所示?

> a, b, c = c(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

mne*_*nel 15

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

e <- list()

e[c('a','b','c')] <- list(1,2,3)
Run Code Online (Sandbox Code Playgroud)

或者在data.table中使用 :=

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

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

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

a
## 1
b
## 2
c
## 3
Run Code Online (Sandbox Code Playgroud)

但不是一般用于在环境中创建对象.


ags*_*udy 5

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

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

$b
[1] 2

$c
[1] 3
Run Code Online (Sandbox Code Playgroud)