如何为JMbayes2::jm()的functional_forms参数实现动态变量调用
动态生成JMbayes2::jm的functional_forms参数
要实现functional_forms参数的左右两侧都用变量传递,你可以通过以下几种方式动态构建列表:
方法1:通过列表索引动态赋值
先定义好左侧键名和右侧公式的变量,再通过列表的[[操作符动态设置键值对:
# 定义变量 lhs_key <- "cbind(citr.log2, 0)" rhs_formula_str <- "~ value(cbind(citr.log2, 0)):CR" # 初始化空列表并动态赋值 functional_forms <- list() functional_forms[[lhs_key]] <- as.formula(rhs_formula_str)
方法2:使用setNames直接生成命名列表
利用setNames函数,将公式列表与自定义键名绑定:
lhs_key <- "cbind(citr.log2, 0)" rhs_formula_str <- "~ value(cbind(citr.log2, 0)):CR" functional_forms <- setNames(list(as.formula(rhs_formula_str)), lhs_key)
方法3:批量处理多组键值对
如果需要同时设置多个functional_forms条目,可以用Map配合命名赋值:
# 定义多组键和公式字符串 lhs_keys <- c("cbind(citr.log2, 0)", "cbind(marker, 1)") rhs_formula_strs <- c("~ value(cbind(citr.log2, 0)):CR", "~ value(cbind(marker, 1)):Treatment") # 生成带命名的公式列表 functional_forms <- Map(function(k, s) as.formula(s), lhs_keys, rhs_formula_strs) names(functional_forms) <- lhs_keys
之后直接将functional_forms传入JMbayes2::jm()即可完成动态调用。
内容的提问来源于stack exchange,提问作者countdigi
相关产品推荐
相关产品推荐

