【问题标题】:Repeating function on each row of dataframe在每一行数据帧上重复功能
【发布时间】:2016-09-18 15:01:36
【问题描述】:

我想应用一个函数,以便对于每个循环,该函数将从数据集的行中获取新的输入参数,并为每个循环提供单独的结果。

假设我有一个这样的数据集:

df<-data.frame(A = 7:11, B = 1:5, C = 4:8, D = 10:14)

功能:

loop<-function(a,b,c,d){
sm <- sum(a,b,c,d)
return(sm)
}

我想自动化以下过程,以便该函数将针对整个数据集分别计算每一行的总和:

loop (df[1,1],df[1,2],df[1,3],df[1,4])
loop (df[2,1],df[3,2],df[3,3],df[3,4])
loop (df[3,1],df[3,2],df[3,3],df[3,4])
loop (df[4,1],df[4,2],df[4,3],df[4,4])
loop (df[5,1],df[5,2],df[5,3],df[5,4])

我尝试使用apply 函数,但是我不能正确地做到这一点。有人可以建议我一个解决方案吗?谢谢你。

【问题讨论】:

  • 或者另一个选项是Reduce("+", df)
  • 如果你想保持原df不变:df %&gt;% mutate(ROWSUM=rowSums(.))

标签: r apply


【解决方案1】:

使用rowSums

rowSums(df)
#[1] 22 26 30 34 38

如果您仍想使用您的 loop 功能,试试这个

mapply(loop,df[,1],df[,2],df[,3],df[,4])
#[1] 22 26 30 34 38

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 2012-07-03
    相关资源
    最近更新 更多