lapply over vector,使用值作为输出列表名称

时间:2013-09-17 15:19:21

标签: r

我想知道最好的方法是使用lapply famliy(或plyr)函数系列来获取向量,将函数应用于元素,并返回一个名称与提供的值相同的列表。第一个参数向量。所以,例如,如果我这样做:

lapply(letters[1:3], function(x) NULL)

[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

我想返回,而不是[[1]],[[2]],[[3]]作为列表的名称(或者更确切地说是普通索引),字母“a”,“ b“和”c“作为输出列表的名称。

我从这里知道我可以这样做(How to create a list with names but no entries in R/Splus?)预先使用正确的名称创建列表,但我想知道我是否可以在不预先创建具有正确名称的列表的情况下执行此操作。 / p>

谢谢, 马特

1 个答案:

答案 0 :(得分:12)

sapply有一个USE.NAMES参数可以执行您想要的操作:

sapply(letters[1:3], function(x) NULL, simplify=FALSE, USE.NAMES=TRUE)
# $a
# NULL

# $b
# NULL

# $c
# NULL

正如Josh O' Brien在评论中所说 - 并且正如你所知 - simplify=FALSE阻止输出被简化为更简单的数据结构,保持结果与你得到了lapply(除了当然的名字)。