我是R的新手,正在寻找计算h指数的方法。
H指数是量化科学生产力的常用指标。
形式上,如果f
是与每个出版物的引用次数相对应的函数,则我们按以下方式计算h索引:
首先,我们将f
的值从最大到最小排序。然后,我们寻找f
大于或等于该位置的最后一个位置(我们称此位置为h)。
例如,如果我们有一个研究人员,其具有5种出版物A,B,C,D和E的引用分别为10、8、5、4和3,则h指数等于4,因为第4种出版物具有4种引用相反,如果同一出版物的引用次数分别为25、8、5、3和3,则第5篇的索引为3,因为同一出版物的引用次数为3。
谁能建议更聪明的方法来解决这个问题
a <- c(10,8,5,4,3)
我期望h索引值的输出为4。
最佳答案
假设输入已经排序,我将使用以下代码:
tail(which(a >= seq_along(a)), 1)
# [1] 4
您当然可以将其放在一个小函数中:
h_index = function(cites) {
if(max(cites) == 0) return(0) # assuming this is reasonable
cites = cites[order(cites, decreasing = TRUE)]
tail(which(cites >= seq_along(cites)), 1)
}
a1 = c(10,8, 5, 4, 3)
a2 = c(10, 9, 7, 1, 1)
h_index(a1)
# [1] 4
h_index(a2)
# [1] 3
h_index(1)
# [1] 1
## set this to be 0, not sure if that's what you want
h_index(0)
# [1] 0
关于r - 如何编写函数以计算R中的H指数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56245315/