在 R 中动态创建命名列表

nb1*_*nb1 6 r list

我需要在 R 中动态创建命名列表,如下所示。

假设有一个名称数组。

name_arr<-c("a","b")
Run Code Online (Sandbox Code Playgroud)

并且有一个值数组。

value_arr<-c(1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)

我想做的是这样的:

list(name_arr[1]=value_arr[1:3])
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行此操作时,R 会抛出错误。关于如何解决这个问题有什么建议吗?

小智 9

您可以使用[[...]]将值分配给字符串给出的键:

my.list <- list()
my.list[[name_arr[1]]] <- value_arr[1:3]
Run Code Online (Sandbox Code Playgroud)


tal*_*lat 6

你可以使用setNames. 例子:

setNames(list(value_arr[1:3]), name_arr[1])
#$a
#[1] 1 2 3

setNames(list(value_arr[1:3], value_arr[4:6]), name_arr)
#$a
#[1] 1 2 3
#
#$b
#[1] 4 5 6
Run Code Online (Sandbox Code Playgroud)

或者没有setNames

mylist <- list(value_arr[1:3])
names(mylist) <- name_arr[1]
mylist
#$a
#[1] 1 2 3

mylist <- list(value_arr[1:3], value_arr[4:6])
names(mylist) <- name_arr
mylist
#$a
#[1] 1 2 3
#
#$b
#[1] 4 5 6
Run Code Online (Sandbox Code Playgroud)