我有一个数据帧,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”