R - 从参数中删除双引号

时间:2015-02-27 08:05:08

标签: r

我正在尝试编写一个函数来获取与特定变量的最大值相对应的行。我是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])

请帮助。

1 个答案:

答案 0 :(得分:1)

返回包含变量maxOf的最大值的行的更简单方法:

mydf[mydf$maxOf==max(mydf$maxOf),]

使功能有效:

temp <-subset(mydf.s,eval(parse(text = myid))==myid.uni[i])