我查看了现有的帖子,但无法得到明确的答案......我有一个数据框,我想通过计算来修改每个数据,并考虑每行的最小值和最大值。
我想使用与函数关联的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,] }
答案 0 :(得分:0)
您传递给apply的第三个参数应该是一个函数。此外,当您使用apply时,没有理由循环。
apply(d,1,function(x) c(min(x), max(x)))
将返回一个2行矩阵,其中每行的最小值和最大值。虽然有一个内置函数来获得min / max,称为`range
apply(d,1,range)