应用用户定义的函数

时间:2014-11-07 10:46:13

标签: r apply

我有一个用户定义的功能。

funct<-function(object,state){
  Init<-matrix(0,nrow=1,ncol=length(object))
  colnames(Init)<-unique(object)
  Init[,which(colnames(Init)==state)]<-Init[,which(colnames(Init)==state)]+1
  return(Init)
}

显示功能输出

letters1<-letters[1:5]
funct(letters1,"b")

我有一个数据框,并在其上应用我的函数,通过使用apply family按行组合。

dat<-data.frame(letters1=c("a","b"))

我的尝试

mapply(funct,unique(dat$letters1),dat$letters1)

期望的输出

rbind(funct(unique(dat$letters1),"a"),funct(unique(dat$letters1),"b"))
 a b
[1,] 1 0
[2,] 0 1

感谢。

1 个答案:

答案 0 :(得分:1)

可能调用diag将是一个更优雅的解决方案,以获得所需的输出&#34; :)

但您也可以稍微简化自定义功能,例如:

> dat <- c("a", "b")
> sapply(dat, function(x) as.numeric(dat == x))
     a b
[1,] 1 0
[2,] 0 1