我有四个数据形式(New_Aud1到4)有两列,第五个(Ctrla)有一列与其他列的第二列有一些重叠。
下面的代码查找Ctrla中与New_Aud1第2列中的任何内容匹配的最后一项,并在New_Aud1中返回该项的位置。然后,它会在该位置或其上方的每个项目旁边放置1,并在其下方的每个项目旁边放置0。
x <- 0
Match_Pos <- -1
while(Match_Pos == -1)
{
last <- Ctrla[length(Ctrla) - x]
Match_Pos <- match(last, New_Aud1[,2], nomatch=-1)
x <- x+1
}
New_Aud1$control <- 0
for (i in 1:Match_Pos) {New_Aud1$control[i] <- 1}
即
New_Aud1 Ctrla
A B C
0 5 5
3 7 6
2 8 7
5 9 10
将C(1,1,0,0)添加到New_Aud1,因为C中与B中的任何内容匹配的最后一项是7,它位于B的第2行。
以上所有内容都按照我想要的方式运作。
我的问题是,是否有办法将其转换为嵌套循环,其中外部循环将此代码循环到其他三个New_Auds,或者我应该只复制此代码3次(最好不要,因为我们可能会添加更多New_Auds)?