请帮我看看数据框取子集的问题怎么搞?
data4是包含三列的数据框,我想知道这个数据框中x和y值都一样的行数是哪几行?(此时不考虑father值)例如七行和九行值一样,就得到七和九的行数。这里应该有三组是一样的,应返回六个下标。
> data4
y x father
2 17 15 1
4 18 14 1
8 19 15 1
21 17 16 2
81 19 16 2
22 17 17 3
62 18 18 3
82 19 17 3
23 18 18 4
43 19 17 4
83 20 18 4
24 18 19 5
84 20 19 5
25 18 20 6
85 20 20 6
26 18 21 7
66 19 22 7
86 20 21 7
27 19 22 8
47 20 21 8
87 21 22 8
28 19 23 9
88 21 23 9
29 19 24 10
69 20 25 10
89 21 24 10
代码是
x<-c(0,40)
y<-c(0,40)
par(bg="gray")
plot(x,y,type="n",xlab="",ylab="")
for(x in 0:40){for(y in 0:40)
rect(x-.5,y-.5,x+.5,y+.5)}
points(c(15,24),c(18,20),pch=21,bg="yellow")
x[1]=15
y[1]=18
x2=24
y2=20
m=max(abs(y2-y[1]),abs(x2-x[1]))
n=m+1
addy=(y2-y[1])/m
addx=(x2-x[1])/m
i=2
for(i in 2:n){x[i]=x[1]+(i-1)*addx
y[i]=y[1]+(i-1)*addy
y[i]=round(y[i])}
data<-data.frame(y=y,x=x)
data2=data.frame(x=NULL,Y=NULL,father=NULL)
for(i in 1:10){x<-rep(c((data[i,]$x-1):(data[i,]$x+1)),3)
y<-rep(c((data[i,]$y-1):(data[i,]$y+1)),each=3)
data1<-data.frame(y=y,x=x,father=rep(NA,9))
for(j in 1:9){if (sqrt((data1[j,]$x-data[i,]$x)^2+(data1[j,]$y-data[i,]$y)^2)<=1)
{rect(data1[j,]$x-.5,data1[j,]$y-.5,data1[j,]$x+.5,data1[j,]$y+.5,col="green")
data1[j,]$father=i
data2=data.frame(rbind(data2,data1[j,]))
}
data3=unique(data2)
}}
b=NULL
for(i in 1:dim(data)[1]){
for(j in 1:dim(data3)[1]){
if(data3[j,1]==data[i,1]&data3[j,2]==data[i,2])
b=c(b,j)
}
}
data4=data3[-b, ]


雷达卡





,结果有点出入。应该是循环下的问题。谢谢
京公网安备 11010802022788号







