2017-07-06 56 views
0

這(部分y = ...)運行異常緩慢:dplyr :: select_if超慢

library(dplyr) 
n <- 10000 
p <- 1000 


x <- as.tbl(as.data.frame(matrix(rnorm(n * p), nc = p))) 
y = x %>% 
    select_if(., is.numeric) 

其實,這是我的數據清洗代碼最小的組成部分之一。有一個更好的方法嗎?

(dplyr 0.7.1)

+0

'X [sapply(X,is.numeric)]'應該更快速 – akrun

+0

可能與[這個公開的問題](https://github.com/tidyverse/dplyr/issues/2813)在dplyr回購。 –

回答

2

此運行速度更快,儘管受到越來越笨拙:

x %>% select(which(lapply(x,class) == "numeric")) 
+0

wao。你的代碼比我的(大得多的數據集)快大約1000倍! – user189035