我正在寻找指导来生成一个返回指定数字列表q.arg2
的函数。元素q.arg2
应具有 n 项,其中 n 是字符向量factors2
中的参数数量。对于因子列表中的每个名称,该函数应在数据框dist2
中查找与名称关联的分布。如果分布是“正常”,则函数应通过在list(mean=x, sd=y)
中查找这些值来返回指定的数字dist2
。如果分发是例如weibull函数应该从单独的数据框shape1
计算weibull分布的shape2
和k2
参数,该数据框包含对列表中每个变量的观察factors2
。然后它应该返回指定的数字list(shape=x, scale=y)
。最后,应根据对象q.arg2
设置sort2
的排序顺序。
下面的代码会生成引用的元素,但请注意q.arg2
仅供参考。我希望生成的函数输出q.arg2
,并将所有其他提供的元素作为参数。
#gen dist2
id<-c("a", "b", "c")
mean<-c(3, 1, 4)
sd<-c(2,7,8)
distribution<-c("weibull", "normal", "normal")
dist2<-rbind(id,mean, sd, distribution)
dist2<-as.data.frame(dist2)
dist2 <- cbind(Row.Names = rownames(dist2), dist2)
rownames(dist2) <- NULL
colnames(dist2) <- c("variable", "var1", "var2", "var3")
#gen factors2
factors <- c("var2", "var3")
#the format that q.arg2 ought to take
q.arg2<-list(list(mean=1,sd=2), list(mean=1,sd=2))
#gen data frame for calculating weibull distributions
k2<-data.frame(replicate(2,rnorm(mean=100, sd=2,300)))
colnames(k2)<-c("var1", "var2")
#fit weibull distribution
require(fitdistrplus)
fw <- fitdist(k2$var1, "weibull")
sort2<-"a,b"