将元素列表转换为每个列表中只有一个元素的列表列表的有效方法是什么。请参阅下面的示例数据:
#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)
提前致谢
使用as.listwill 是将向量的每个元素转换为列表的有效方法。
\n由于您的list_vector是一个未命名的 list,您可以使用as.list,lapply或sapply将向量的每个元素转换为一个列表,每个列表中只有一个元素。
x <- as.list(vector)\ny <- lapply(vector, identity)\nz <- unname(sapply(vector,list))\nRun Code Online (Sandbox Code Playgroud)\n平等测试:
\nidentical(x, list_vector)\n[1] TRUE\nidentical(y, list_vector)\n[1] TRUE\nidentical(z, list_vector)\n[1] TRUE\nRun Code Online (Sandbox Code Playgroud)\n基准
\nx <- 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```\nRun Code Online (Sandbox Code Playgroud)\n