条件具有长度>1且仅使用第一个元素

我有一个数据帧,trip:

>头部(行程突变)
参考y变量y
1tc
2 G C
3 A C
4tc
5 C A
6g/A

我想添加第三列mutType,它遵循以下规则:

用于(i/1:nrow(行程)){
如果(trip$Ref.y=='G'和trip$Variant.y=='T'| trip$Ref.y=='C'和trip$Variant.y=='A'){
trip[i,'mutType']<-“G:C到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到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到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到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到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到C:G”
}
}

但我得到了一个错误:

警告消息:
1:在if中(行程$Ref.y==“G”和行程$Variant.y==“T”|行程$Ref.y==…:
条件的长度大于1,并且只使用第一个元素

我不认为我的逻辑语句应该生成向量,但也许我遗漏了什么。trip$mutType应该会像这样结束:

mutType
A:T到G:C
G:C到C:G
A:T到C:G
A:T到G:C
G:C到T:A
G:C到A:T

有人能发现这里出了什么问题吗?我需要| |而不是|也许

之所以会出现错误,是因为if只能计算长度为1的逻辑向量

也许您忽略了&)和&|)之间的区别。较短的版本按元素工作,较长的版本仅使用每个向量的第一个元素,例如:

c(真,真)和c(真,假)
#[1]对错
#c(正确,正确)和c(正确,错误)
[1] 真的

您根本不需要if语句:

mut1<-trip$Ref.y=='G'和trip$Variant.y=='T'| trip$Ref.y=='C'和trip$Variant.y=='A'
行程[mut1,“mutType”]<-“G:C到T:A”

发表评论