TL;DR:我需要的是list().
我正在尝试创建一个对象列表。我不知道会有多少对象或它们会被称为什么,而且可能有很多。所以我不能只是手工列出一个清单。
但是,我知道当需要制作列表时,所有对象都将存在于我的环境中,并且我知道我将有一个包含所有对象名称的字符向量。
(这些是我试图避免变得更大的可怕的三层 for 循环的输出。我可以创建一个空列表,然后在循环创建对象时为其分配对象,但我不想这样做.)
我已经搜索过 Google 和 Stack Overflow,但找不到好的解决方案。在我看来,我需要的是一个向量化版本list():某种东西,它将采用对象名称的向量,找到所有这些对象并将它们放入一个列表中。
list(obj1, obj2, obj3) # Not this. I don't want to name each element individually.
objectsVector <- c("obj1", "obj2", "obj3")
list_vectorised(elements = objectsVector) # I want this instead.
namesVector <- c("anObject", "anotherObject", "yetAnotherObject")
list_vectorised(elements = objectsVector, names = namesVector) # Or better still, this.
Run Code Online (Sandbox Code Playgroud)
d.b*_*d.b 11
您可以使用mget从环境中获取对象并将它们放入列表中。
mget(VECTOR_OF_NAMES_OF_OBJECTS)
Run Code Online (Sandbox Code Playgroud)
您还可以结合mget使用,ls()这样您就不必键入您自己的对象名称。
obj1 = 1:2
obj2 = 3:7
obj13 = 8:11
mget(ls(pattern = "obj\\d+"))
#$obj1
#[1] 1 2
#$obj13
#[1] 8 9 10 11
#$obj2
#[1] 3 4 5 6 7
Run Code Online (Sandbox Code Playgroud)