Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_Vectorization - Fatal编程技术网

R 针对每个匹配查找和的矢量化备选方案

R 针对每个匹配查找和的矢量化备选方案,r,loops,vectorization,R,Loops,Vectorization,有人能为以下代码提供矢量化替代方案吗: x=read.table("1.txt") y=read.table("unique.txt") nrowx=nrow(x) nrowy=nrow(y) for(i in 1:nrowy) { y[i,3]=0 for(j in i:nrowx) { if((y[i,1]==x[j,1])&(y[i,2]==x[j,2]))

有人能为以下代码提供矢量化替代方案吗:

x=read.table("1.txt")
y=read.table("unique.txt")
nrowx=nrow(x)
nrowy=nrow(y)
for(i in 1:nrowy)
    {
        y[i,3]=0
        for(j in i:nrowx)            
        {
            if((y[i,1]==x[j,1])&(y[i,2]==x[j,2]))
            {
                y[i,3] = (y[i,3] + x[j,3])
            }
        }
    }
文件y包含x的唯一元素(考虑前两列)。对于y中的每个条目,所有可能的匹配项都在x中找到,x的第3列中对应值的总和存储在y的第3列中。这是为y的每一行执行的

在x中读取几行文件:

"X1" "X2" "X3"
"1" 4 10 -1440
"2" 4 10 -3765
"3" 10 22 523
"4" 10 295 730
"5" 10 295 1599
"6" 10 584 1872
"7" 10 403 1872
"8" 10 403 1872
"9" 10 281 554
"10" 10 123 554
在y中读取的文件的几行:

"X1" "X2" "X3" 
"1" 4 10 NA 
"3" 10 22 NA 
"4" 10 295 NA 
"6" 10 584 NA 
"7" 10 403 NA 
"9" 10 281 NA 
"10" 10 123 NA 
预期产出:

X1  X2    X3
1  4  10 -5205
2 10  22   523
3 10 123   554
4 10 281   554
5 10 295  2329
6 10 403  3744
7 10 584  1872
文件非常大,这些循环占用了很多时间。一些不涉及循环的替代方案是受欢迎的。
谢谢

在这里,
aggregate
函数似乎很有用:

aggregate(x, list(x$X1, x$X2), sum) -> a
data.frame(X1=a$Group.1, X2=a$Group.2, X3=a$X3)
  X1  X2    X3
1  4  10 -5205
2 10  22   523
3 10 123   554
4 10 281   554
5 10 295  2329
6 10 403  3744
7 10 584  1872

这个快吗?请告诉我。

请描述您的预期输出。我已相应地编辑了我的问题。否。您没有描述预期的输出。现在还不清楚您是想匹配行名还是行号。这肯定要快得多!谢谢