如何确保使用“apply”将函数应用于每一行,结果是否以行方式放在一起?

时间:2016-04-20 09:05:00

标签: r dataframe

假设我有以下数据框:

df <- data.frame(replicate(5,sample(0:1,10,rep=TRUE)))

我将一些功能应用到每一行

apply(df, 1, function(x) sum(x))

如何确保结果按行排列?我希望再次有一个数据帧/向量,其中每行包含相应的和。这是一个相当简单的例子,但我希望它说明了这个问题。谢谢!

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到。以下是其中之一:

t(apply(df, 1, function(x){c(x,sum(x))} ))

<强>更新

如果函数的结果返回一个df :(我假设一个fn返回一个带有2行的df:row1-数据行,末尾加上&amp; row2-重复第1行

interim_res<- rbind(lapply(as.data.frame(t(df)), function(x){
as.data.frame(rbind(c(x,sum(x)),c(x,sum(x))))
}))
res<- do.call(rbind,interim_res)

答案 1 :(得分:0)

我认为sapply会简化多个data.frame rbind - 所以你可以试试

df <- data.frame(replicate(5,sample(0:1,10,rep=TRUE)))
sapply(t(df), function(x), sum(x))

或者至少它会将它们列入您可以rbind

的列表中