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

mpe*_*tis 8 r

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

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

[[1]]
NULL

[[2]]
NULL

[[3]]
NULL
Run Code Online (Sandbox Code Playgroud)

我想返回,而不是[[1]],[[2]],[[3]]作为列表的名称(或简称为普通索引),字母"a","b",和"c"作为输出列表的名称.

我从这里知道我可以这样做(如何在R/Splus中创建一个名称但没有条目的列表),事先用正确的名称创建列表,但我想知道如果我不能预先创建列出正确的名称.

谢谢,马特

Pey*_*ton 12

sapply有一个USE.NAMES参数可以做你想要的:

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

# $b
# NULL

# $c
# NULL
Run Code Online (Sandbox Code Playgroud)

正如Josh O'Brien在评论中指出的那样 - 正如你已经想到的那样 - simplify=FALSE阻止输出被简化为更简单的数据结构,保持结果与你所得到的一致lapply(除了名字之外)课程).

  • 也可能设置 `simplify=FALSE` 以使行为更加一致,如 `lapply()`。 (2认同)