我最近看到马特Dowle写一些代码as.factor()
,特别是
for (col in names_factors) set(dt, j=col, value=as.factor(dt[[col]]))
Run Code Online (Sandbox Code Playgroud)
我使用了这个片段,但是我需要明确设置因子级别以确保级别以我想要的顺序出现,所以我不得不改变
as.factor(dt[[col]])
Run Code Online (Sandbox Code Playgroud)
至
factor(dt[[col]], levels = my_levels)
Run Code Online (Sandbox Code Playgroud)
这让我想到:什么(如果有的话)是使用as.factor()
与仅仅的好处factor()
?
一切都在问题中!我只是试着做一些优化,并且为了好奇而把钉子钉在脖子上,我试过了:
t1 <- rnorm(10)
microbenchmark(
mean(t1),
sum(t1)/length(t1),
times = 10000)
Run Code Online (Sandbox Code Playgroud)
结果是mean()比"手动"计算慢6倍!
它是否源于在调用Internal(mean)之前mean()代码的开销,还是C代码本身更慢?为什么?有充分的理由,因此是一个很好的用例吗?