我从未在R中使用循环或应用函数,我意识到我的代码看起来很乱,因为我一遍又一遍地重复相同的代码行。
我有一个名为"行为"的数据集。使用我的研究组的不同复制组(" EC1:EC8; N1:N12),我想分别为这些组中的每个组运行完全相同的函数集。
我正在做的只是复制下面的整个代码,但交换每个EC6让我们说EC7。最后,我得到20次相同的重复,这是相当耗时,低效和业余的。我只是想知道如何在将文件名与组名匹配时自动化整个事物。非常感谢你(下面的代码)。
EC6 <- filter(behavior, groupID == "EC6")
EC6_scores <-elo.seq(winner= EC6$MaleID, loser= EC6$FemaleID, Date= EC6$NewDate)
EC6_result <- EC6_scores[["mat"]]
EC6_result<- melt(EC6_result,
na.rm = FALSE, value.name = "ELO_SCORE",
factorsAsStrings = TRUE)
EC6_result <- EC6_result %>%
rename(Male=Var2, Day = Var1)
ggplot(EC6_result, aes(x = Day, y = ELO_SCORE, group = Male, colour=Male)) +
geom_point(size=4, alpha = 0.8) +
geom_line() +
scale_x_continuous(breaks=EC6_result$Day,labels = EC6_result$Day) +
labs(title = "EC6") +
theme_bw()
答案 0 :(得分:0)
由于原始数据集不可用,因此很难完全开发代码,但如果使用循环,我会做类似的事情。
for (group in 1:length(unique(df$groupColumn))){
currentGroup = unique(df$groupColumn)[group]
groupFilter <- filter(behavior, groupID == currentGroup)
group_result <- groupFilter[["mat"]]
...
ggplot(...)
}
wheredf$groupColumn
是包含所有不同组的原始数据框的列。
但是,对于评论中发布的其他用途,使用dplyr
解决方案更有效。