我手动创建命名列表,例如:
FD_OesophagitisIntro<-list(x="LA Grade A",
x="LA Grade B",
x="LA Grade C",
x="LA Grade D")
但这是重复的,因此更整洁的版本
FD_OesophagitisIntro<-list(unique(append(FD_OesophagitisIntro,replicate(4,paste("LA Grade ",sample(c("A","B","C","D"),replace=F))))))
然而,这会创建一个非命名列表。如何使用更简洁的代码
创建上面的列表答案 0 :(得分:1)
如果您的问题是如何使用replicate
创建命名列表,则只有在表达式具有名称时才能执行此操作。
replicate
是sapply
的包装器,表达式被评估为匿名函数,如下所示:
sapply(integer(4), function(...){
paste("LA Grade ", sample(c("A", "B", "C", "D"), replace = F)
})
...
没有replicate
个参数,但幸运的是,sapply
的{{1}}参数默认设置为USE.NAMES
。因此,要从中获取名称,您需要TRUE
为X
(它不是&#39; t "character"
),或者返回值为{ {1}}有名字。它不是。它是对"integer"
的调用的返回值,它在所有参数上调用expr
,因此删除属性,包括名称。您可以在以下示例中看到:
paste()
这意味着您的解决方案将涉及将调用分离为as.character()
,然后将名称分配给它返回的对象。可悲的是,它变成了一个带花括号的假单行,或者根本不是一个单行。
您还必须将paste(c(a = "x", b = "x"), c(a = "y", b = "y"))
[1] "x y" "x y"
的产品作为列表传递给replicate
,以便保留其名称,而不是使用replicate
(因为它剥离名称。)
以下是一个例子:
append