gpt4 book ai didi

r - 检查数据框是否为空的最快方法

转载 作者:行者123 更新时间:2023-12-02 04:20:33 28 4
gpt4 key购买 nike

检查 data.frame 是否最快(每一微秒都很重要)的方法是什么?是空的?我在以下情况下需要它:

if (<df is not empty>) { do something here }

可能的解决方案:

1) if(is.empty(df$V1) == FALSE来自 `spatstat' 包

2) if(nrow(df) != 0)

3) 您的解决方案

我可以做:

library(microbenchmark)
microbenchmark(is.empty(df),times=100)
Unit: microseconds
expr min lq mean median uq max neval
is.empty(df) 5.8 5.8 6.9 6 6.2 66 100

但不知道如何计时 2)。空 df 的解决方案是什么?

谢谢!

最佳答案

假设我们有两种类型的 data.frames:

emptyDF = data.frame(a=1,b="bah")[0,]
fullDF = data.frame(a=1,b="bah")

DFs = list(emptyDF,fullDF)[sample(1:2,1e4,replace=TRUE)]

并且您的 if 条件显示在一个循环中,例如

boundDF = data.frame()
for (i in seq_along(DFs)){ if (nrow(DFs[[i]]))
boundDF <- rbind(boundDF,DFs[[i]])
}

在这种情况下,您处理问题的方式是错误的。 if 语句不是必需的:do.call(rbind,DFs)library(data.table); rbindlist(DFs) 更快、更清晰。

通常,您在错误的地方寻求代码性能的改进。 无论您在循环内执行什么操作,检查 data.frame 是否为空的步骤都不会是花费最多时间的部分。 虽然这一步可能还有优化的空间,但正如 Donald Knuth 所说,“过早的优化是万恶之源”。

关于r - 检查数据框是否为空的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30808195/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com