Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
矢量化代替R中的循环_R_For Loop_Vectorization - Fatal编程技术网

矢量化代替R中的循环

矢量化代替R中的循环,r,for-loop,vectorization,R,For Loop,Vectorization,我想通过用矢量化的替代品替换一些“forloops”来提高处理时间 下面是一个简化的示例,说明我将如何处理一个更大的数据集 df <- data.frame(time = c(10, 12, 14, 14, 14, 17, 23, 23, 30, 32), ranks = vector(mode = 'double', length = 10)) df_hilf <- data.frame(time_hilf = c(10, 12, 14, 17, 23, 30, 32), ran

我想通过用矢量化的替代品替换一些“forloops”来提高处理时间

下面是一个简化的示例,说明我将如何处理一个更大的数据集

df <- data.frame(time = c(10, 12, 14, 14, 14, 17, 23, 23, 30, 32), ranks = vector(mode = 'double', length = 10))

df_hilf <- data.frame(time_hilf = c(10, 12, 14, 17, 23, 30, 32), ranking_hilf = c(1, 2, 4, 6, 7.5, 9, 10))

for (j in 1:nrow(df_hilf)) {
    df$ranks[df$time == df_hilf$time_hilf[j]] <- df_hilf$ranking_hilf[j]
}
我认为这可以与函数
replicate
一起使用,但我还没有找到如何设置
n
参数,因为相同时间值的出现次数也不同

不幸的是,我也没有在网上找到解决这个问题的方法。如果我忽略了什么,我道歉

您可以使用
match()

df$等级df
#时间顺序
#1    10   1.0
#2    12   2.0
#3    14   4.0
#4    14   4.0
#5    14   4.0
#6    17   6.0
#7    23   7.5
#8    23   7.5
#9    30   9.0
#10   32  10.0

谢谢,这是我一直在寻找的函数。
> df
   time ranks
1    10   1.0
2    12   2.0
3    14   4.0
4    14   4.0
5    14   4.0
6    17   6.0
7    23   7.5
8    23   7.5
9    30   9.0
10   32  10.0
df$ranks <- df_hilf$ranking_hilf[match(df$time, df_hilf$time)]
#> df
#   time ranks
#1    10   1.0
#2    12   2.0
#3    14   4.0
#4    14   4.0
#5    14   4.0
#6    17   6.0
#7    23   7.5
#8    23   7.5
#9    30   9.0
#10   32  10.0