所以我们知道R有list()
变量,也知道R有调用names()
函数来给予变量命名。例如:
a=30
names(a)="number"
a
# number
# 30
但是现在,我想给一个列表变量起一个名字,像这样:
b=list()
names(b)="number"
它返回如下错误消息:
Error in names(b) = "number" :
'names' attribute [1] must be the same length as the vector [0]
我该怎么办?我这样做是因为我需要很多列表变量。或者,你有没有其他方法,让我可以创建许多列表变量,而不玩它的名字?
4条答案
按热度按时间taor4pac1#
由于@akrun不需要更多的点数,这里有一个例子展示了如何将名称分配给列表:
3bygqnnd2#
看起来好像您对标记对象本身而不是其中的元素感兴趣。关键是列表对象的
names
属性必须分配给它的元素。一个选择,因为你说你有很多列表对象,是将列表存储在一个大列表中,然后你可以为大列表分配名称,列表对象中的元素也可以命名。另一种选择是,您可以使用
Hmisc
包中的label
功能。它修改了R中最常见的对象,使其具有一个子类“labeled”,因此每当你打印列表时,它都会显示标签。这对于文档和更好地组织工作区是很好的,但是警告很容易意外地将标签对象转换为非标签类,并混淆那些不想搜索多个类的方法。另一种选择是让列表对象的“名称”成为列表的实际元素。在许多复杂的R数据结构中,当出现这种需求并且基本R数据结构无法满足时,这是存储标签、标题或名称的首选方式。
最后一种可能性是,您需要一个占位符来存储尚未填充列表的元素的“names”属性。如果元素的长度和类型已知,则可以使用例如:
numeric(1)
一种可命名的“引发”载体。如果您不知道输出的数据结构,我不会使用这种方法,因为在R中“构建”数据结构真实的占用内存。q0qdq0h23#
其他可能性是
ma8fv8wu4#
我构造了一个1列的矩阵
然后使用
names()
函数分配名称然后用
as.list()
函数将其转换为列表解决了我的问题