r - R for 循环只通过一个向量
问题描述
我想先连接一个逻辑模型的方程,然后是一个线性模型。
对于模型 1,o1=p1+p2+p3(二项式将输入到 glm 函数中的族参数)
对于模型 2,o2=p1+p2+p3(高斯将输入到 glm 函数中的族参数)
在现实生活中的例子中,会有更多的模型。
这是基本场景:
outcome <- c("o1", "o2")
predictor <- c("p1", "p2", "p3")
link=c("binomial", "gaussian")
try <- function(outcomes, predictors) {
for(o in outcome) {
eq <- paste(o, "~")
for(p in predictor) {
eq=paste0(eq, p, "+")
}
# remove extra +
eq <- substr(eq,1,nchar(eq)-1)
# model will go here
eq <- lapply(link, function(x) paste0(x, " - ", eq))
print(eq)
}
}
try(outcomes=outcome, predictors=predictor)
输出:
[[1]]
[1] "binomial - o1 ~p1+p2+p3"
[[2]]
[1] "gaussian - o1 ~p1+p2+p3"
[[1]]
[1] "binomial - o2 ~p1+p2+p3"
[[2]]
[1] "gaussian - o2 ~p1+p2+p3"
相反,我想要:
[1] "binomial - o1 ~p1+p2+p3"
[1] "gaussian - o2 ~p1+p2+p3"
解决方案
我们能做的
try1 <- function(outcomes, predictors) {
Map(function(x, y) paste(y, '-',
deparse(reformulate(predictors, x))), outcomes, link)
}
-测试
try1(outcomes=outcome, predictors=predictor)
#$o1
#[1] "binomial - o1 ~ p1 + p2 + p3"
#$o2
#[1] "gaussian - o2 ~ p1 + p2 + p3"
推荐阅读
- angular - 如何在 Angular: 9.0.1 中使用 *ngfor 从顶部的最新日期开始对订单进行排序
- firebase - 如何从自定义域提供 firebase 功能?
- javascript - 收到错误:ValueError:检查输入时出错:预期 conv3d_Conv3D1_input 有 5 个维度。但得到了形状为 97,1 的数组
- windows - Windows 批量复制以根据部分名称将文件夹分类到文件夹中
- batch-file - 如何在批处理文件中编辑文本结果
- python-3.x - 为什么我的 on_message 事件不起作用(discord.py)
- ocaml - 在 Windows 64 上使用 opam 安装 tsdl 时构建 conf-pkg-config 2 的问题
- c# - 如何修复从这个生成器代码中得到的返回错误?
- node.js - 将位于 Firebase Cloud Storage 中的文件发送到另一个网站
- javascript - 如何将本地 .html 代码加载为嵌入元素