尽可能使r中的代码更加优雅和简短-r

尽可能使r中的代码更加优雅和简短-r,r,mean,R,Mean,一点背景:这是一段代码,用于计算一只名为BOE 1的老鼠在12天的研究过程中平均行走的距离,每天重复4次实验。每个数据集中有19只老鼠接受测试 问题:我想计算每个鼠标的平均移动距离,并将其放入表格中。我所做的一切都是可行的,但我很好奇是否有办法使下面的代码更短、重复性更少 尝试的选项: mean(BOE.1Data$Distance.cm[BOE.1Data$Day == c(1,2, ect)] mean(BOE.1Data$Distance.cm[BOE.1Data$Day == c(1|2

一点背景:这是一段代码,用于计算一只名为BOE 1的老鼠在12天的研究过程中平均行走的距离,每天重复4次实验。每个数据集中有19只老鼠接受测试

问题:我想计算每个鼠标的平均移动距离,并将其放入表格中。我所做的一切都是可行的,但我很好奇是否有办法使下面的代码更短、重复性更少

尝试的选项:

mean(BOE.1Data$Distance.cm[BOE.1Data$Day == c(1,2, ect)]
mean(BOE.1Data$Distance.cm[BOE.1Data$Day == c(1|2| ect)]
mean(BOE.1Data$Distance.cm[BOE.1Data$Day == c(1&2& ect)]
这些都不适合我

代码:

Distance.1 = c(mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 1]),
               mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 2]), 
               mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 3]),
               mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 4]),
               mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 5]),
               mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 6]),
               mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 7]), 
               mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 8]), 
               mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 9]), 
               mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 10]), 
               mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 11]), 
               mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 12]))

您可以使用
by()
执行此操作:


n一种方法,包含
数据。表
。将“data.frame”转换为“data.table”(
setDT(BOE.1Data)
),按“Day”分组,得到“Distance.cm”的
平均值

library(data.table)
setDT(BOE.1Data)[, .(MeanDist = mean(Distance.cm)) , by = Day]

另一种使用
dplyr
magrittr
的方法是使用
arrange()
来确保它们是有序的

Distance.1 <- BOE.1Data %>% group_by(Day) %>%
      mutate(mean_dist=mean(Distance.cm)) %>%
      arrange(Day) %$% mean_dist
Distance.1%按天分组%>%
变异(平均距离=平均距离(cm))%>%
安排(天)%$%平均距离

欢迎来到StackOverflow。请提供您想要的
(BOE.1Data,tapply(Distance.cm,Day,mean))
,但如果没有样本输入和所需输出,很难确定。1。对于R2中的
-循环,应该避免使用
。你的代码显然不能按你想象的方式工作。我被教导应该使用for循环来缩短代码。我只是想提供一些帮助,并提供一种解决问题的方法,但我是半新手,因此没有测试代码的数据,我无法保证代码的准确性。
library(data.table)
setDT(BOE.1Data)[, .(MeanDist = mean(Distance.cm)) , by = Day]
Distance.1 <- BOE.1Data %>% group_by(Day) %>%
      mutate(mean_dist=mean(Distance.cm)) %>%
      arrange(Day) %$% mean_dist