0

パッケージspatstatを使用しています。健康 (マーク = いいえ) と病気 (マーク = はい) の 2 つのセットに分割した座標のデータ フレームがあります。病気のポイントと他のすべてのポイントの間の距離を見つけることができます。

>D<-crossdist(diseased,healthy)

しかし、今度は、病気のポイントからの距離に基づいてポイントを指摘する必要があります。

>i<-length(D)
>for n=1:i,
>   if D[n]<1,
>       mark(n)<-yes,
>   else,
>       mark(n)<-no,
>   end
>end

私は R でループを使用するのは初めてで、Matlab での使用が得意ではありませんでした。まだすべてのヘルプ ガイドを調べていますが、これを行う方法に関するヒントは非常に役立ちます。

D は次のようになります。

> D
              [,1]     [,2]     [,3]     [,4]    [,5]     [,6]     [,7]     [,8]
    [1,] 0.4796548 5.906068 6.061941 5.837476 5.62358 5.196297 7.687075 1.740198
             [,9]    [,10]    [,11]    [,12]    [,13]    [,14]    [,15]    [,16]
    [1,] 2.760947 8.921383 10.64188 8.385258 6.788703 6.542282 8.631057 11.19689
            [,17]    [,18]    [,19]    [,20]    [,21]    [,22]    [,23]    [,24]
    [1,] 11.38957 11.16738 10.88189 10.48931 9.116005 7.757465 7.907191 8.453458
            [,25]   [,26]    [,27]    [,28]    [,29]    [,30]    [,31]   [,32]
    [1,] 7.072456 6.89453 8.900875 8.613843 8.569073 11.82978 11.68813 9.27332
            [,33]   [,34]    [,35]    [,36]    [,37]    [,38]    [,39]
    [1,] 9.318501 9.64491 9.264779 9.357388 9.488624 10.57165 9.173374
4

1 に答える 1

1

あなたが本当にマトリックスを持っている場合(あなたがそうしているように見える)、この問題を行うための2つのアプローチ:

set.seed(10)
D <- matrix(rnorm(20) + 2, 1)

D2 <- ifelse(D > 1, "yes", "no")       #method 1
D2

D2 <- matrix(rep("no", ncol(D)), 1)    #method 2
D2[D > 1] <- "yes"
D2

編集:

D2 <- ifelse(c(D) > 1, "yes", "no")       #method 1

D2 <- matrix(rep("no", ncol(D)), 1)    #method 2
D2[D > 1] <- "yes"
c(D2)
于 2012-07-25T01:06:15.977 に答える