【发布时间】:2016-09-12 12:54:46
【问题描述】:
我是循环的新手 - 实际上,我不了解它们,并且通常会尝试寻找更简单的替代方案。这里我有一个简单的数据集:
spp = c("A", "B", "C", "A", "D","D")
Genus = as.vector(rep(1,6))
df = data.frame(cbind(spp,Genus), stringsAsFactors=FALSE)
我想根据“spp”列的内容,用特定的属名替换“属”列中的任何内容。这就是我所做的:
df$Genus[(df$spp == "A")] = "Apple"
df$Genus[(df$spp == "B")] = "Bla"
df$Genus[(df$spp == "C")] = "Cat"
df$Genus[(df$spp == "D")] = "Donkey"
虽然它返回所需的结果,但我正在寻找一种无需重复自己就可以循环此函数的方法?我的尝试涉及尝试在各种if 和for 和apply 函数中使用levels(df$spp),但都失败了并且返回了我不理解的错误。我看过的所有基本循环示例都只使用了非常简单的函数,但我不知道如何将循环应用于具有两部分的稍微复杂的函数,如上所述?任何建议将不胜感激!
弗朗索瓦
【问题讨论】:
-
使用带有命名向量的查找表。这是一个工作示例。
lookup <- c("A"="Apple", "B"="Bla", "C"="Cat", "D"="Donkey"); df$Genus <- lookup[match(df$spp, names(lookup))].
标签: r loops replace apply factors