如何在csv中保存所有循环的结果

时间:2015-10-18 11:53:31

标签: r loops

考虑这个玩具数据框:

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文件中输入所有结果的列表?

1 个答案:

答案 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")