如何在R中为列表添加标签?

16
我目前正在使用R,并想知道如何在声明列表时给列表对象打标签。例如:return(list(xhat,alpha,beta)),其中xhatalphabeta本身就是数组。我想为每个数组分配适当的标签。
谢谢。
2个回答

26

对于简单情况,Michael的答案可以运行。但是有时你会有一个名字向量my_names,你想用它来命名/重命名输出结果。至少有三种方法:

  • 使用names<-

  • out <- list(xhat,alpha,beta)  
    names(out) <- my_names  
    out
    
  • 使用 setNames()

    setNames(out, my_names)
    
  • 使用structure()函数:

  • structure(out, names=my_names)
    

所有这些都不需要return(),如果在顶层(即不在函数内部)使用将导致错误。 - Gavin Simpson
@Gavin,显然如此,但他的问题是关于标记返回值,所以return语句是为了符合问题。 - VitoshKa
在R中,返回值是可选的,省略它是很好的风格,除非用于提前退出。 - hadley
好的,为了清晰起见,我已经从答案中删除了 return() - VitoshKa

10

你只需要使用 list(x=xhat, a=alpha, b=beta) 即可。


是的,但我想给输出加上标签。 - George Tyler
1
当您使用例如 list.name["x"] 来选择列表的每个元素时,名称(这里是 x)会与输出一起打印。当您使用两个方括号时,名称会被省略 list.name[["x"]]。这是您要寻找的吗? - mropa
VitoshKa和我提出的所有方法都可以创建一个带有标记元素的列表。如果您事先知道标签,那么我建议的方法是有效的。VitoshKa的解决方案更加通用,因此适用于在脚本中确定标签的情况。至于您对这些标签的处理方式,则是另一个问题... - Michael Dunn
2
@[George Tyler] 你在问题“如何在声明列表时对列表对象进行标记”中非常清楚。那么,您是想为现有对象命名(VitoshKa的回答)还是在声明时添加名称(Michael的回答)? - Marek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接