我有以下數據:爲什麼數據框列與矩陣列相比工作更快?
height = 1:10000000
length = -(1:10000000)
body_dim = data.frame(height,length)
body_dim_mat = as.matrix(body_dim)
爲什麼which()
運行速度更快的數據幀相比矩陣?
> microbenchmark(body_dim[which(body_dim$height==50000),"length"])
Unit: milliseconds
expr min lq median uq max neval
body_dim[which(body_dim$height == 50000), "length"] 124.4586 125.1625 125.9281 127.9496 284.9824 100
> microbenchmark(body_dim_mat[which(body_dim_mat[,1] == 50000),2])
Unit: milliseconds
expr min lq median uq max neval
body_dim_mat[which(body_dim_mat[, 1] == 50000), 2] 251.1282 252.4457 389.7251 400.313 1004.25 100
+1即使'DF [[1]]'比'DF $ V1'慢。 –
有趣的附加測試:採用'm [1:1e4]',因爲'R'在內部將矩陣看作帶有dim屬性的向量。結果只是比'm [,1]'稍快。 –