[R] Help with programming a tricky algorithm
Andrew Crane-Droesch
andrewcd at gmail.com
Mon Oct 22 17:26:21 CEST 2012
Rui,
Thanks a lot for your help. Unfortunately this doesn't work though:
1> is.border <- function(idx, DF){
1+ i1 <- DF$ix %in% (DF$ix[idx] + c(-1, 1)) & DF$iy == DF$iy[idx]
1+ i2 <- DF$iy %in% (DF$iy[idx] + c(-1, 1)) & DF$ix == DF$ix[idx]
1+ any(DF$country[idx] != DF$country[i1 | i2])
1+ }
1>
1> brdr <- sapply(sub$idxy, is.border, sub)
1> sub$border <- as.integer(brdr)
1> head(sub)
y x name year idxy idt rain ndvi temp pop95
1 10.05928 1.9315833 benin 2001 1892 66 112.9945 535.0 300.1728 16.81851
2 10.05928 0.4770379 togo 2001 492 66 129.3910 464.5 300.3082 24.74213
3 10.05928 1.0588560 togo 2001 1052 66 144.9040 460.5 300.2535 29.34577
4 10.05928 2.8043106 benin 2001 2732 66 153.2175 572.5 300.1122 20.39760
5 10.05928 3.8224924 nigeria 2001 3712 66 162.9701 589.5 300.0277 11.40092
6 10.05928 0.8406742 togo 2001 842 66 143.1389 510.5 300.2740 29.34577
pop00 pop05 cropland pasture rainl1 rainl2 templ1
templ2
1 19.20563 22.32065 0.04130662 0.02016802 112.05880 60.00279 303.4361
304.4833
2 29.13643 33.08628 0.51615972 0.25667389 136.98332 38.74465 303.5708
304.5079
3 34.55809 39.24327 0.25539863 0.09774620 129.25399 39.04244 303.5183
304.5009
4 23.29283 27.07122 0.10509129 0.02065746 109.87102 119.92331 303.3055
304.3630
5 13.16283 13.73924 0.12865660 0.61500187 99.13176 67.27786 303.1213
304.1993
6 34.55809 39.24327 0.20321523 0.21327476 131.74456 38.64642 303.5380
304.5035
pophat p96 p97 p98 p99 p00 p01 p02 p03 p04 p05 p06 nres ndvihat
1 19.82864 1 0 0 0 0 0 0 0 0 0 0 477.0112 576.8041
2 29.92640 1 0 0 0 0 0 0 0 0 0 0 -854.3601 486.1667
3 35.49513 1 0 0 0 0 0 0 0 0 0 0 -930.1263 487.2222
4 24.04851 1 0 0 0 0 0 0 0 0 0 0 363.3710 544.4345
5 13.27811 1 0 0 0 0 0 0 0 0 0 0 1234.5701 541.9867
6 35.49513 1 0 0 0 0 0 0 0 0 0 0 -153.9017 496.0020
res ffresid fe wvec ndviann exrate isnigeria time D
1 32.60776 -676.2175 429.5025 261.6586 0.9947269 1.421233 0 2 0
2 41.00458 -343.6485 350.6056 251.5608 1.1106229 1.398511 0 2 0
3 38.19903 -419.1147 349.4112 245.9921 1.0967285 1.398511 0 2 0
4 113.99665 450.3076 385.6136 257.4387 1.0747216 1.421233 0 2 0
5 126.52839 778.1297 390.0818 268.2091 1.1022806 5.254477 1 2 1
6 78.50062 227.3886 359.1096 245.9921 1.0719824 1.398511 0 2 0
timexD ix iy border
1 0 27 1 0
2 0 7 1 0
3 0 15 1 0
4 0 39 1 0
5 2 53 1 0
6 0 12 1 0
1> unique(sub$border)
[1] 0
On 10/21/2012 09:48 AM, Rui Barradas wrote:
> is.border <- function(idx, DF){
> i1 <- DF$ix %in% (DF$ix[idx] + c(-1, 1)) & DF$iy == DF$iy[idx]
> i2 <- DF$iy %in% (DF$iy[idx] + c(-1, 1)) & DF$ix == DF$ix[idx]
> any(DF$country[idx] != DF$country[i1 | i2])
> }
>
> brdr <- sapply(Mydata$idxy, is.border, Mydata)
> Mydata$border <- as.integer(brdr)
More information about the R-help
mailing list