考虑这个玩具数据框:
df <- read.table(text = "target birds wolfs
0 21 7
0 8 4
1 2 5
1 2 4
0 8 3
1 1 12
1 7 10
1 1 9 ",header = TRUE)
我想运行一个循环函数来计算每个变量的2:5行的平均值,并将所有结果保存为CSV。
我写了这行代码:
for(i in names(df)) {print(mean(df[2:5,i]))}
并得到以下结果:
[1] 0.5
[1] 5
[1] 4
但是当我尝试使用下面的代码将其导出到csv时,我只在文件中输入了最后一个结果:[1] 4。 代码:
for(i in names(df)) { j<-(mean(df[2:5,i]))
write.csv(j,"j.csv") }
如何在同一个csv文件中输入所有结果的列表?
答案 0 :(得分:1)
在dplyr
中,您可以使用summarise_each
对数据框的每一列执行计算。
library(dplyr)
j <- slice(df,2:5) %>% # selects rows 2 to 5
summarise_each(funs=funs(mean(.))) # computes mean of each column
结果在data.frame中:
j
target birds wolfs
1 0.5 5 4
如果您希望每个变量在单独的行上表示,请使用t()
t(j)
[,1]
target 0.5
birds 5.0
wolfs 4.0
导出结果:
write.csv(t(j),"j.csv")