有人可以建议以下代码的矢量化替代方案:
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 的唯一元素(考虑到第 2 列)。对于 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
这些文件非常大,这些循环需要很长时间。欢迎一些不涉及循环的替代方案。谢谢!