0

私のデータフレーム(g)には、継続データを含む2つの列と、カテゴリデータを含む他の列が含まれています。3番目の列で定義されたさまざまなグループで、2つの継続変数間の相関をテストしたいと思います。
g(157X3000)は次のようになります:

     Geno          GDW         GN        M1     M2      M3
1 SB002XSB012 -17.1597630   52.31961    G/G    C/C     T/T
3 SB002XSB044  -3.6537657   53.81305    G/G    C/G     G/G
4 SB002XSB051  -7.8411596   58.05924    A/G    C/C     G/T
5 SB002XSB067   2.8412103   30.85074    A/G    G/G     G/T
6 SB002XSB073 -16.0789550  -10.09913    A/A    C/G     G/G
7 SB002XSB095   0.1759709   10.28837    A/A    G/G     T/T

私は、各Mによって定義された各グループのGDWとGNの間の相関関係を探しています。私は試しました:

q<- function (x) {

spl<-split(g[,2:3],x)

r<-function(x) { if ((nrow(x[[1]][1]))>2)

cor.test(x[[1]][1],x[[1]][2],use="pairwise.complete.obs")[3:4] else Na
}

cor<- sapply(spl,r)

}

all.cor<- apply(g[,4:ncol(g)],2,q)

そして得た:

Error in if ((nrow(x[[1]][1])) > 2) cor.test(x[[1]][1], x[[1]][2], use = "pairwise.complete.obs")[3:4] else Na : 
  argument is of length zero

そしてそれを解決しませんでした

何か案は

4

2 に答える 2

2

私の理解が正しければ、列 M1 のすべての値について GDW と GN の間の相関を計算する必要があります (つまり、M1 のすべての一意の値で分割することによって)。

ハドレープライヤーの使い方

require(plyr)
# assuming the data.frame is df (Note: factor M1 if necessary)
daply(df, .(M1), function(y) cor(y$GDW, y$GN))
于 2012-12-25T13:22:51.223 に答える
0

関数内でこれが必要だと思いますr

if ((length(x[[1]]))>2)
    cor.test(x[[1]],x[[2]],use="pairwise.complete.obs")[3:4] else NA

x[[1]]はベクトルですが、x[[1]][1]はそのベクトルの 1 つの要素です。cor.test単一の要素ではなく、明らかにベクトルが必要です。

また、ベクトルにはlengthnrowありますが、適切ではありません。

得られるエラーは にnrow(x[[1]][1])評価した結果なNULLので、 にnrow(x[[1]][1]) > 2評価されlogical(0)ます。への引数は、長さ 1 でifなければなりません。logical

于 2012-12-25T14:43:06.207 に答える