R 将向量中的每个元素转换为列表的列表

Gor*_*orp 2 r list

将元素列表转换为每个列表中只有一个元素的列表列表的有效方法是什么。请参阅下面的示例数据:

#This vector (but with many more elements) I'd like to turn into a list of list with one element in each. 
vector <- c("element1", "element2", "element3")

# It should look like this: 
list_vector <- list("element1", "element2", "element3")

#This is old: and not really how I want it: 
 
 list_vector <- list(list("element1"), list("element1"), list("element1"))
Run Code Online (Sandbox Code Playgroud)

提前致谢

GKi*_*GKi 5

使用as.listwill 是将向量的每个元素转换为列表的有效方法。
\n由于您的list_vector是一个未命名的 list,您可以使用as.list,lapplysapply向量的每个元素转换为一个列表,每个列表中只有一个元素

\n
x <- as.list(vector)\ny <- lapply(vector, identity)\nz <- unname(sapply(vector,list))\n
Run Code Online (Sandbox Code Playgroud)\n

平等测试:

\n
identical(x, list_vector)\n[1] TRUE\nidentical(y, list_vector)\n[1] TRUE\nidentical(z, list_vector)\n[1] TRUE\n
Run Code Online (Sandbox Code Playgroud)\n

基准

\n
x <- c("element1", "element2", "element3")\n\nbench::mark("as.list" = as.list(x)\n          , "lapply" = lapply(x, identity)\n          , "sapply" = unname(sapply(x, list)))\n#  expression     min  median `itr/sec` mem_alloc `gc/sec` n_itr  n_gc total_time\n#  <bch:expr> <bch:t> <bch:t>     <dbl> <bch:byt>    <dbl> <int> <dbl>   <bch:tm>\n#1 as.list     1.19\xc2\xb5s  1.76\xc2\xb5s   493963.        0B     98.8  9998     2     20.2ms\n#2 lapply      1.78\xc2\xb5s  2.02\xc2\xb5s   341163.        0B      0   10000     0     29.3ms\n#3 sapply       9.6\xc2\xb5s 10.94\xc2\xb5s    81512.        0B     32.6  9996     4    122.6m```\n
Run Code Online (Sandbox Code Playgroud)\n