我正在重建物种名称数据集。它有一个带有拉丁名称的列和一个带有普通名称(如果可用)的列。我想创建一个第三列,在可用时给出简单的名称,否则给出拉丁名称。普通名称和拉丁名称都属于因子类。
我尝试过 if 循环:
if(art2$trivname==""){
art2$artname=trivname
}else{
art2$artname=latname
}
它为我提供了正确的 trivname,但仅在提供拉丁名称时给出 NA。
当我使用 ifelse 时,我只得到数字。
一如既往,感谢所有帮助:)
Example:
art <- data.frame(trivname = c("cat", "", "deer"), latname = c("cattus", "canis", "cervus"))
art$artname <- with(art, ifelse(trivname == "", as.character(latname), as.character(trivname)))
print(art)
# trivname latname artname
# 1 cat cattus cat
# 2 canis canis
# 3 deer cervus deer
(我认为 options(stringsAsFactors = FALSE) 作为默认值对大多数人来说会更容易,但你就这样了......)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)