library(plyr)
library(reshape2)
# 用aggregate函数进行数据汇总
aggregate(iris[1:4],list(iris$Species),mean)
# 用reshape2包进行数据汇总
data.melt <- melt(iris,id=c('Species'))
dcast(data.melt,Species~variable,mean)
# 用ddply函数进行数据汇总
ddply(iris,.(Species),function(df) mean(df[1:4]))
# 首先定义回归函数
model <- function(x) {
lm(Petal.Length~Petal.Width,data=x)
}
# 如果用普通的函数则需要如下的分割、计算、整合三个步骤共四条命令
pieces <- split(iris,list(iris$Species))
models <- lapply(pieces,model)
result <- lapply(models,coef)
do.call('rbind',result)
# 用plyr包只用下面两个函数,每个函数都内置了分割、计算、整合的功能。
result1 <- dlply(iris,.(Species),model)
result2 <- ldply(result1,function(x) coef(x))
replicate(20,mean(runif(100)))
rdply(20, mean(runif(100)))
mapply(rnorm,mean=1:5,sd=1:5, n=2)
mdply(data.frame(mean = 1:5, sd = 1:5), rnorm, n = 2)
library(nnet)
# 确定建模函数
nnet.m <- function(...) {
nnet(Species~.,data=iris,trace=F,...)
}
# 确定输入参数
opts <- data.frame(size=1:10,maxiter=50)
# 建立预测准确率的函数
accuracy <- function(mod,true) {
pred <- factor(predict(mod,type='class'),levels=levels(true))
tb <- table(pred,true)
sum(diag(tb))/sum(tb)
}
# 用mlply函数建立包括10个元素的列表,每个元素包括了一个建模结果
models <- mlply(opts,nnet.m)
# 再用ldply函数读取列表,计算后得到最终结果
ldply(models,'accuracy',true=iris$Species)