如何使用需要2个参数的函数

时间:2014-07-07 13:49:25

标签: r function apply

我查看了现有的帖子,但无法得到明确的答案......我有一个数据框,我想通过计算来修改每个数据,并考虑每行的最小值和最大值。

我想使用与函数关联的apply:

sc=function(x,seg) {(x-seg[2])*100/(seg[1]-seg[2])}

sc=function(x,a,b) {(x-b)*100/(a-b)}

其中x是数据帧的一行,seg = c(a,b)计算如下

d=dim(data) ## data is my dataframe
for (i in (1:d[1]))  ## the calculation has to be done for each line, according
                     ## the min and max of the specific line   
{
seg=c(max(data[i,]),min(data[i,]))
data[i,]=apply(data[i,],1,sc) 
return(data)
}

这显然不起作用,因为我不知道如何告诉应用它需要考虑多个参数......

可能有一个R函数执行此特定计算,但由于我是R初学者,我真的很想知道如何创建这样的编码。

感谢您的帮助!

斯特凡

更新 这是我找到的解决方案,但对我来说听起来并不合乎逻辑......

for (i in (1:d[1])) {
t=apply(data,2,sc,seg=range(data[i,]))
data[i,]=t[i,] }

1 个答案:

答案 0 :(得分:0)

您传递给apply的第三个参数应该是一个函数。此外,当您使用apply时,没有理由循环。

apply(d,1,function(x) c(min(x), max(x)))

将返回一个2行矩阵,其中每行的最小值和最大值。虽然有一个内置函数来获得min / max,称为`range

apply(d,1,range)