R 如何与需要2个参数的函数一起使用apply

R 如何与需要2个参数的函数一起使用apply,r,function,apply,R,Function,Apply,我查看了现有的帖子,但没有得到一个明确的答案。。。我有一个数据框,我想通过一个考虑到每行的最小值和最大值的计算来修改每个数据 我想使用与函数关联的apply: sc=function(x,seg) {(x-seg[2])*100/(seg[1]-seg[2])} 或 其中x是数据帧的一条线,seg=c(a,b)计算如下 d=dim(data) ## data is my dataframe for (i in (1:d[1])) ## the calculation has to be do

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

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

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

其中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)
}
这显然不起作用,因为我不知道如何告诉apply它需要考虑多个参数

可能有一个R函数可以进行这种特定的计算,但由于我是R初学者,我非常希望了解如何创建这种编码

谢谢你的帮助

圣菲

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

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

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

apply(d,1,function(x) c(min(x), max(x)))
将返回一个两行矩阵,其中包含每行的最小值和最大值。尽管有一个内置函数可以获取名为`范围'的最小/最大值

apply(d,1,range)

请参见
?应用
中的示例。特别是,
apply(x,1,cave,c1=“x1”,c2=c(“x1”,“x2”))
感谢您的评论。是的,我在帮助中看到了,但不是很明确。。。我试过:
data[I,]=apply(data[I,],1,sc,seg=range(data[I,])
但我有一条错误消息:
Erreur dans apply(data[I,],1,sc,seg=range(data[I,]):dim(X)必须有一个正长度
apply(d,1,range)