【发布时间】:2021-03-25 23:01:51
【问题描述】:
我正在尝试编写一个函数来计算 h 点。该函数是在秩频率数据帧上定义的。考虑以下data.frame:
DATA <-data.frame(frequency=c(64,58,54,32,29,29,25,17,17,15,12,12,10), rank=c(seq(1, 13)))
h点的公式是:
if {有一个 r = f(r), h-point = r } else { h-point = f(i)j-f(j)i / j-i+f(i)-f(j)其中 f(i) 和 f(j) 是第 i 个和第 j 个秩的对应频率,i 和 j 是 i
这是我到目前为止所做的:
h_point <- function(data){
x <- seq(nrow(data))
f_x <- data[["frequency"]][x]
h <- which(x == f_x)
if(length(h)>1) h
else{
i <- which(x < f_x)
j <- which(x > f_x)
s <- which(outer(i,j,"-") == -1, TRUE)
i <- i[s[,1]]
j <- j[s[,2]]
cat("i: ",i, "j: ", j,"\n")
f_x[i]*j - f_x[j]*i / (i-j + f_x[i]-f_x[j])
}
}
在 DATA 中,h 点是 12——因为 x = f_x。然而,
h_point(DATA)
i: j:
numeric(0)
我在这里做错了什么?
【问题讨论】:
-
这不是您之前的问题how to calculate h-point 的重复吗?您是否逐步通过该函数来检查中间结果?
标签: r function if-statement text-mining