我想列出这样的连续数字:
list(1,2,3,4)列出四个人的名单。
现在我不想写所有的数字,所以试着:
list(1:4)给出了四个长度的列表。
如果我想列一个四人的列表而不写所有的数字,那么语法是什么呢?
请帮忙,谢谢
发布于 2020-03-10 10:21:02
您可以使用as.list(1:4)
as.list(1:4)[1] 1
[2] 2
[3] 3
[4] 4
编辑
或as.list(seq(4))
编辑#2
下面是使用microbenchmark的速度比较
microbenchmark(as.list(1:4), as.list(seq(4)), Map(c,1:4), sapply(1:4, list), times=1e6)
Unit: microseconds
expr min lq mean median uq max neval
as.list(1:4) 1.472 2.088 2.639712 2.314 2.584 32594.44 1e+06
as.list(seq(4)) 3.934 5.359 6.514579 5.818 6.337 31498.31 1e+06
Map(c, 1:4) 3.435 5.052 6.243628 5.516 6.041 32628.84 1e+06
sapply(1:4, list) 6.892 9.358 11.282727 10.009 10.757 34269.70 1e+06发布于 2020-03-10 10:22:18
我们可以用
sapply(1:4, list)[1] 1 [2] 2 [3] 3 [4] 4
all.equal(sapply(1:4, list), list(1,2,3,4))
[1] TRUE发布于 2020-03-10 11:28:15
您可以使用Map进行代码测试。
Map(c,1:4)这样的话
> Map(c,1:4)
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] 4https://stackoverflow.com/questions/60615526
复制相似问题