in R:用于生成从查找表填充并由另一个列表排序的命名数字列表的函数

时间:2018-05-22 19:52:16

标签: r function lapply tidyr

我正在寻找指导来生成一个返回指定数字列表q.arg2的函数。元素q.arg2应具有 n 项,其中 n 是字符向量factors2中的参数数量。对于因子列表中的每个名称,该函数应在数据框dist2中查找与名称关联的分布。如果分布是“正常”,则函数应通过在list(mean=x, sd=y)中查找这些值来返回指定的数字dist2。如果分发是例如weibull函数应该从单独的数据框shape1计算weibull分布的shape2k2参数,该数据框包含对列表中每个变量的观察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"

0 个答案:

没有答案