使用行

时间:2016-12-26 21:17:03

标签: r

到目前为止,我已经看到应用具有两个参数的函数并使用列索引号。有没有比使用参数更好的方法但应用整个列名? 我有一个包含多列的表,并使用每个列值。

我的实际df比这大,并且具有更复杂的功能。所以我希望传递整个df名称,而不是像apply(df,c['price','quantity','level'],MARGIN=1, FUN= myfunc)

那样
df= data.frame(price = c(204, 45, 62),
                    type = c("F", "F","M"),
                    quantity = c(400,33,2),
                    level = c(1,3,1)
)

我正在寻找我这样做的地方:

myfun = function(){
   //uses every data row in the dataframe; without rewriting df all the time
   if (df$type == "F")
      return (df$price*df$quantity*df$level)
}

apply(df, FUN = myfunc)

1 个答案:

答案 0 :(得分:0)

您可以按照以下方式执行此操作:

res = apply(df, 1, function(t){
    if(t["type"] == "F") 
        return(as.numeric(t["price"]) * as.numeric(t["quantity"]) * as.numeric(t["level"]))
    else
        return("NO")
})

我希望这可以解决你的问题。