到目前为止,我已经看到应用具有两个参数的函数并使用列索引号。有没有比使用参数更好的方法但应用整个列名? 我有一个包含多列的表,并使用每个列值。
我的实际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)
答案 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")
})
我希望这可以解决你的问题。