如何在R中保持函数(dset,group)不变

时间:2014-05-19 00:02:20

标签: r

x<- c(62, 60, 63, 59, 63, 67)
grp1<-factor(rep(1:2))
grp2<-rep(1:3)
dat <-data.frame(x,grp1,grp2)

aaa<-function(dset,group) {
  if (length(levels(group))==2) {
    print("ccc")
  }
  else {
    print("ddd")
  }
}

我运行aaa(dset=dat,group="grp1"),但结果不是"ccc"。如何修改aaa函数内容并保持aaa(dset=dat,group="grp1")不变?

我的回答:

aaa<-function(dset,group) {
  grp<-dset[,c(group)]
  if (length(levels(grp))==2) {
    print("ccc")
  }
  else {
   print("ddd")
  }
}

aaa(dset=dat,group="grp1")

1 个答案:

答案 0 :(得分:2)

该函数需要知道group的上下文(即它是dset的子集):

aaa <- function(dset,group) {
  if (length(levels(dset[,group])) == 2) {  #this is different
    print("ccc")
  } else {
    print("ddd")
  }
}