0

(WilcoxRankSum-Test を使用して) 1 行目と 2 行目、次に 3 行目と 4 行目などをテストしようとする data.frame があります。したがって、ループを書きました。これを複数のデータ フレームに適用する必要があるため、このループを保存し、後で他のデータ フレームに適用する関数を作成しました。ブラケットを{}数回リセットするpval[i]か、他のいくつかのスレッドで推奨されているように sapply に置き換えようとしました。

私の意見では、ループは正常に機能します。しかし、ループは にアクセスできませんpval。よくある問題でお手数をおかけして申し訳ありません。私は新しく独学しました(すべてスレッドから;))。しかし、私は問題を見つけることができません。生活を楽にするショートカットを見つけたら、コメントをいただければ幸いです。

これが私のコードです:

ZP <- function(data){  
library(exactRankTests)
pval  <- vector(length=nrow(data))
k  <- seq(1,nrow(data)-1, by=2)
for (i in seq_along(k)) {
pval[i] <-  wilcox.exact(as.numeric(data[k[i],6:10]),
                           as.numeric(data[k[i]+1,6:10]), 
                           alternative = "greater", conf.level=0.95)$p.value 
return(pval)
}
} 

結果は次のとおりです。

ZP(realdata)
 [1] 0.8492063 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
 [9] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
[17] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
[25] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000

次のようにしたいので、後でデータに cbind できます。

ZP(realdata)
 [1] "pval" "0"    "pval" "0"    "pval" "0"    "pval" "0"    "pval" "0"    "pval"
[12] "0"    "pval" "0"    "pval" "0"    "pval" "0"    "pval" "0"    "pval" "0"   
[23] "pval" "0"    "pval" "0"    "pval" "0"    "pval" "0"    "pval" "0"   

私のデータは次のようになります。

      Proband Lauf Interleukin Ansatz  Zeitpunkt Data1 Data2 Data3 Data4 Data5
 1       1    1        IFNy   stim     ZP0         7     2     3     3     7
 2       1    1        IFNy    neg     ZP0         3     2     0     2     1
4

3 に答える 3

0

この試みはどうですか (これは で標準的に機能する可能性がありwilcox.exact()ます)?

# data <- iris[rep(1:50,each=2)+c(0,50),] # use some flowers for demonstration
p.vals <- as.numeric(by(data[,1:4],rep(seq(50),each=2), function(rowpair) 
    wilcox.test(rowpair[,1], rowpair[,2], alt="greater")$p.val))

ところで: のみに関心がある場合はp.val、指定する必要はないconf.level=0.95ようです。

于 2013-07-30T13:46:38.257 に答える
0

それで、ついにループが機能するようになりました。関数を実行して一連のデータに適用すると、値が返されます。しかし、以前に「0」に設定した pval を R が表示すると、まだ 0 です。関数の外部で pval にアクセスできないようです。それはおそらく私が見逃している基本的なものです。

P <- function(x){  
  library(exactRankTests)
  pval  <- vector(length=nrow(x))
  k  <- seq(1, nrow(x), by=2)
  for (i in seq_along(k)) {
  pval[k[i]] <-  wilcox.exact(as.numeric(x[k[i],6:10]),
                              as.numeric(x[k[i]+1,6:10]), 
                              alternative = "greater", conf.level=0.95)$p.value} 
   return(pval)
}
于 2013-12-04T19:47:27.017 に答える