1) 生成数据框:
df <- data.frame(genotypes = c("G1", "G2", "G3"),
parents = c("mac cemolt giza",
"mac miser",
"miser cemolt mac NE10"),
stringsAsFactors = FALSE)
2) 编写函数来查找基因型字符串中的共同父母。
假设: 在 parents 列中,每个 parent 用空格分隔。如果将基因型与其自身进行比较,则返回 0 个共同父母(基于您的预期结果表)。
commonParents <- function(vector1, vector2) {
lapply(1:length(vector1), function(x) {
if(vector1[x] == vector2[x]) {
return(0)
} else {
parents <- unlist(strsplit(vector1[x], split = " "))
sum(sapply(parents, function(y) grepl(y, vector2[x], ignore.case = TRUE)))
}
})
}
3) 使用outer 创建值矩阵:
outer(df$parents, df$parents, FUN = "commonParents")