我有一个很大的文件,我想根据其他列创建一个列。
我的文件如下所示:

person = c(1,2,3,4,5,6,7,8)
father = c(0,0,1,1,4,5,5,7)
mother = c(0,0,2,3,2,2,6,6)
ped = data.frame(person,father,mother)

我想创建一个列来指示此人是父亲还是母亲(性别列)。在一个小示例中,我使用for循环将其获取,但是当我将其应用于整个文件时,需要花费数小时才能完成。请问如何创建一个Apply函数来解决这个问题。谢谢。
for(i in 1:nrow(ped)){
  ped$test[i] = ifelse(ped[i,1] %in% ped[,2], "M", ifelse(ped[i,1] %in% ped[,3], "F", NA))
}

最佳答案

试试这个:

ped <- transform(ped, gender = ifelse(person %in% father,
                                      'M',
                                      ifelse(person %in% mother, 'F', NA)
                                     ))

与其循环遍历行中的各个值,不如使用向量化。

08-20 03:02