是否seq_len(x)总是快于1:x?比另一个更优先吗?

时间:2018-01-09 06:13:42

标签: r

这个问题不言自明。但是必须有一个理由让R中的多个函数做同样的事情。

在循环中,是seq_len()之一还是:就速度而言更优选?

文档并未在我看来讲述完整的故事。

1 个答案:

答案 0 :(得分:1)

首先请注意,seq_len(x)显然比seq()更有限:前者生成从1到x的向量,而后者允许任意的开始,结束和增量。

如果

x <- numeric(0)
y <- length(x)

你得到了

1:y
[1] 1 0

seq_len(y)
integer(0)

所以前者在处理数组时可能是一个问题。

最后seq_len()seq()快。正如您对问题的评论中所提出的,这可以从一个简单的基准来看:

benchmark(seq(1,10^7),seq_len(10^7))

test replications elapsed relative user.self sys.self user.child 
2 seq_len(10^7)       100    1.880     1.000    0.992      0.801  
1 seq(1, 10^7)        100    2.645     1.407    1.094      0.940