我有一個data.frame我試圖測試(與WilcoxRankSum測試)第1和第2行,然後第3和第4行等。所以我寫了一個循環。因爲我必須將其應用於多個數據框架,所以我創建了一個函數來存儲此循環並稍後將其應用於其他人。 我嘗試多次重置括號{}
或用其他幾個線程推薦的sapply替換pval[i]
。無法存儲循環的結果
在我看來,循環工作正常。但循環無法訪問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
你的函數似乎沒有返回任何東西:你可能希望它的最後一行是'pval'或'return(pval)'。 –
另外,你的大括號不合適,因爲你正存儲在'for''循環之外的'pval [[i]]中。 – Thomas
我想要結果以長度= nrow(數據)的向量返回,所以我可以稍後將其綁定到數據。 – newbymedicalstats