簡體   English   中英

for循環中的R增量向量

[英]R increment vector in for-loop

我有一個表稱為61列的“ pvalue”:

  • 第一個是示例“ IdEch”的名稱
  • 所有其他列都是名為pvalue1到Pvalue60的不同pvalues,我想選擇所有顯示“至少”的“ IdEch”,其中一個<0.01

我嘗試在每列上執行for循環(選擇Pvalue <0.01),但是我無法將IdEch記錄在向量中。 我只有列號...沒有用...我找不到解決方法...

這是我的腳本:

res = data.frame()

list_pvalue = c()

for (i in 2:ncol(pvalue)) {

  res = subset( pvalue , pvalue[,i] < 0.01 ) 

  list_pvalue = c(res$IdEch,list_pvalue)

}

list_pvalue = unique(list_pvalue)

你快到了。 您想為每行查找任何 pvalue < 0.01行。

要對每一行執行某項操作,請使用apply 要查看是否有any真值,請使用any?apply?any

# pvalue[, -1] selects all but the first column
# pvalue[, -1] < 0.01 is a logical dataframe of TRUE/FALSE
# apply(X, 1, FUN) applys FUN to each row of X
# apply(pvalue[, -1] < 0.01, 1, any) is TRUE for each row that has a pvalue < 0.01
pvalue[apply(pvalue[, -1] < 0.01, 1, any), ] # is what you are after

請嘗試以下示例

#dummy data
set.seed(123)
pvalue <- data.frame(IdEch=paste0("ID",1:10),
                     Pvalue1=runif(10,0,0.05),
                     Pvalue2=runif(10,0,0.05),
                     Pvalue3=runif(10,0,0.05),
                     Pvalue4=runif(10,0,0.05),stringsAsFactors = FALSE)

pvalue
#    IdEch     Pvalue1     Pvalue2     Pvalue3     Pvalue4
# 1    ID1 0.014378876 0.047841667 0.044476966 0.048151212
# 2    ID2 0.039415257 0.022666708 0.034640170 0.045114952
# 3    ID3 0.020448846 0.033878532 0.032025341 0.034535264
# 4    ID4 0.044150870 0.028631670 0.049713489 0.039773371
# 5    ID5 0.047023364 0.005146234 0.032785290 0.001230684
# 6    ID6 0.002277825 0.044991249 0.035426523 0.023889799
# 7    ID7 0.026405274 0.012304387 0.027203301 0.037922977
# 8    ID8 0.044620952 0.002102977 0.029707101 0.010820397
# 9    ID9 0.027571751 0.016396036 0.014457987 0.015909050
# 10  ID10 0.022830737 0.047725182 0.007355682 0.011581289

pvalue[ rowSums(pvalue[,-1] < 0.01) > 1, "IdEch" ]
# [1] "ID5"
pvalue[-1]

給出不帶IdEch列的數據幀。 pmin應用於此可以在每一行中提供最小值。 如果某個值小於0.01,則最小值為。

do.call("pmin", pvalue[-1]) < 0.01

然后為您提供具有較小值的rowindices。 以便

pvalue[do.call("pmin", pvalue[-1]) < 0.01]

應該是你想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM