我需要帮助更快地运行此代码。我试图拉出与“数据”中的条目相对应的“内容”行。我有 800,000 行内容和 17,000 行数据。已经花了24个多小时了,还没完成。我是编码新手,不知道有任何其他方法可以尝试这个
这是我正在运行的代码
plays <- data.frame(matrix(nrow=16218, ncol=7))
for(i in 1:nrow(data)){
for(j in 1:nrow(stuff)){
if(stuff[j,4] == data[i,5] & stuff[j,2] == data[i,2]){
plays[i,] <- stuff[j,]
}
}
}
正如Onyambu所说,使用
dplyr::innerjoin
会比嵌套for循环更快,而且代码也更简单。
这是一个例子:
library(tibble)
# Create 'stuff' tibble
stuff <- tibble(
ID = c(1, 2, 3, 4),
Name = c("Apple", "Banana", "Orange", "Grape"),
Color = c("Red", "Yellow", "Orange", "Green")
)
# Create 'data' tibble
data <- tibble(
ID = c(2, 4, 5),
Value = c(10, 20, 30),
Weight = c(0.5, 0.8, 1.2)
)
inner_join(stuff, data, by = "ID")
# A tibble: 2 × 5
ID Name Color Value Weight
<dbl> <chr> <chr> <dbl> <dbl>
1 2 Banana Yellow 10 0.5
2 4 Grape Green 20 0.8
如果您仍然遇到速度缓慢的情况,我会考虑使用不同的库。 这里是一些不同库的比较,以及它们在连接上的性能。