亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

條件的長度> 1,并且僅使用第一個元素

條件的長度> 1,并且僅使用第一個元素

白豬掌柜的 2019-11-19 09:56:30
我有一個數據框,旅行:> head(trip.mutations)  Ref.y Variant.y1 T     C 2 G     C 3 A     C  4 T     C 5 C     A 6 G     A 我要添加遵循以下規則的第三列:mutType:for (i in 1:nrow(trip)) {   if(trip$Ref.y=='G' & trip$Variant.y=='T'|trip$Ref.y=='C' & trip$Variant.y=='A') {      trip[i, 'mutType'] <- "G:C to T:A"   }   else if(trip$Ref.y=='G' & trip$Variant.y=='C'|trip$Ref.y=='C' & trip$Variant.y=='G') {      trip[i, 'mutType'] <- "G:C to C:G"   }   else if(trip$Ref.y=='G' & trip$Variant.y=='A'|trip$Ref.y=='C' & trip$Variant.y=='T') {      trip[i, 'mutType'] <- "G:C to A:T"   }   else if(trip$Ref.y=='A' & trip$Variant.y=='T'|trip$Ref.y=='T' & trip$Variant.y=='A') {      trip[i, 'mutType'] <- "A:T to T:A"   }   else if(trip$Ref.y=='A' & trip$Variant.y=='G'|trip$Ref.y=='T' & trip$Variant.y=='C') {      trip[i, 'mutType'] <- "A:T to G:C"   }   else if(trip$Ref.y=='A' & trip$Variant.y=='C'|trip$Ref.y=='T' & trip$Variant.y=='G') {      trip[i, 'mutType'] <- "A:T to C:G"   }}但是我得到了錯誤:Warning messages:1: In if (trip$Ref.y == "G" & trip$Variant.y == "T" | trip$Ref.y ==  ... :  the condition has length > 1 and only the first element will be used我認為我的邏輯語句不應該產生向量,但是也許我缺少了一些東西。trip $ mutType 應該看起來像這樣:mutTypeA:T to G:CG:C to C:GA:T to C:GA:T to G:CG:C to T:AG:C to A:T有人可以在這里發現問題嗎?我需要||嗎 代替| 也許?
查看完整描述

2 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

之所以if會出現錯誤,是因為只能評估logical長度為1 的向量。


也許您錯過了&(|)和&&(||)之間的區別。較短的版本按元素運行,而較長的版本僅使用每個向量的第一個元素,例如:


c(TRUE, TRUE) & c(TRUE, FALSE)

# [1] TRUE FALSE


# c(TRUE, TRUE) && c(TRUE, FALSE)

[1] TRUE

您根本不需要該if語句:


mut1 <- trip$Ref.y=='G' & trip$Variant.y=='T'|trip$Ref.y=='C' & trip$Variant.y=='A'

trip[mut1, "mutType"] <- "G:C to T:A"


查看完整回答
反對 回復 2019-11-19
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

就像sgibb所說的那樣,這是一個問題,與| |無關?;騶|。


這是解決問題的另一種方法:


for (i in 1:nrow(trip)) {

  if(trip$Ref.y[i]=='G' & trip$Variant.y[i]=='T'|trip$Ref.y[i]=='C' & trip$Variant.y[i]=='A') {

    trip[i, 'mutType'] <- "G:C to T:A"

  }

  else if(trip$Ref.y[i]=='G' & trip$Variant.y[i]=='C'|trip$Ref.y[i]=='C' & trip$Variant.y[i]=='G') {

    trip[i, 'mutType'] <- "G:C to C:G"

  }

  else if(trip$Ref.y[i]=='G' & trip$Variant.y[i]=='A'|trip$Ref.y[i]=='C' & trip$Variant.y[i]=='T') {

    trip[i, 'mutType'] <- "G:C to A:T"

  }

  else if(trip$Ref.y[i]=='A' & trip$Variant.y[i]=='T'|trip$Ref.y[i]=='T' & trip$Variant.y[i]=='A') {

    trip[i, 'mutType'] <- "A:T to T:A"

  }

  else if(trip$Ref.y[i]=='A' & trip$Variant.y[i]=='G'|trip$Ref.y[i]=='T' & trip$Variant.y[i]=='C') {

    trip[i, 'mutType'] <- "A:T to G:C"

  }

  else if(trip$Ref.y[i]=='A' & trip$Variant.y[i]=='C'|trip$Ref.y[i]=='T' & trip$Variant.y[i]=='G') {

    trip[i, 'mutType'] <- "A:T to C:G"

  }

}


查看完整回答
反對 回復 2019-11-19
  • 2 回答
  • 0 關注
  • 942 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號