问题是在满足条件时向数据框添加新列。当第一列是1时,然后是" hom"当0 1 a" het"应该输出。感谢任何帮助。
示例:
1 1 --> hom
1 1 --> hom
0 1 --> het
1 1 --> hom
0 1 --> het
答案 0 :(得分:1)
尝试
c('het', 'horn')[as.numeric(factor(do.call(paste, df1)))]
#[1] "horn" "horn" "het" "horn" "het"
或者,如果第一列只是改变
c('het', 'horn')[df1[,1]+1L]
#[1] "horn" "horn" "het" "horn" "het"
df1 <- data.frame(V1 = c(1, 1, 0, 1, 0), V2= 1)
答案 1 :(得分:1)
如果这是唯一要检查的两个条件,那么仅检查数据帧的第一列就足够了
df <- data.frame(num1 = c(1,0,1), num2 = c(1,1,1))
ifelse(df$num1 == 1,"hom","het")
# [1] "hom" "het" "hom"
答案 2 :(得分:1)
你可以试试这个:
df1[,3] <- ifelse(xor(df1[,1],df1[,2]),"het","hom")
#> df1
# V1 V2 V3
#1 1 1 hom
#2 1 1 hom
#3 0 1 het
#4 1 1 hom
#5 0 1 het
请注意,与@RonakShah的回答相反,这将为het
组合返回1 0
。我认为这似乎是合理的,但如果您能够澄清预期的输出是仅仅依赖于第1列还是依赖于两列中的值,那将会有所帮助,无论它们的顺序如何。此外,尚不清楚组合0 0
的预期输出是什么。此代码将为hom
返回0 0
。