我正在尝试编写一个函数来获取与特定变量的最大值相对应的行。我是R的新手,这个方法是在网站上给出的,我只是想用网站上给出的方法创建一个函数。
请参阅以下代码。
uniMax2 <- function(mydf,myid,maxOf) {
# mydf - data.frame, myid - sorting variable
# maxOf - variable to be used for maximum value
mydf.s = mydf[order(mydf[[myid]],mydf[[maxOf]]),]
myid.uni <- unique(mydf.s[[myid]])
ln <- length(myid.uni)
last <- c()
for(i in 1:ln) {
temp <-subset(mydf.s,myid==myid.uni[i])
if (dim(temp)[1]>1) {
last.temp <- temp[dim(temp)[1],]
}
else {
last.temp <- temp
}
last = rbind(last, last.temp)
}
return(last)
}
当我像这样使用这个功能时 uniMax2(HSB2,&#34; PROG&#34;&#34;数学&#34)
问题出在这一行
temp <-subset(mydf.s,myid==myid.uni[i])
我认为此行已解决为
temp <-subset(mydf.s,"prog"==myid.uni[i])
但它应该以
解决temp <-subset(mydf.s,prog==myid.uni[i])
请帮助。
答案 0 :(得分:1)
返回包含变量maxOf
的最大值的行的更简单方法:
mydf[mydf$maxOf==max(mydf$maxOf),]
使功能有效:
temp <-subset(mydf.s,eval(parse(text = myid))==myid.uni[i])