如何自动将example1、example2的均值与标准差设为x、y的MEAN和SD?
解决方法
直接通过R的对象元素提取语法$,将example1、example2中存储的mean_to_hist和sd_to_hist自动传入Fluorescence_Intensity函数即可,同时清理代码中重复定义的冗余函数:
V <- function(C, E, HS, EC_50) { response <- E + (1 - E) / (1 + exp(HS * (C - EC_50))) list(response = response, mean_to_hist = mean(response), sd_to_hist = 1) } example1 <- V(seq(-12, 0, by = 0.1),0,1,log(1e-3)) example2 <- V(seq(-36, 0, by = 0.1),0,1,log(1e-3)) Fluorescence_Intensity <- function(X, MEAN, SD, METHOD){ if(METHOD=="rnorm"){ res <- rnorm(X, MEAN, SD) } if(METHOD=="dnorm"){ res <- dnorm(X, MEAN, SD) } if(METHOD=="qnorm"){ res <- qnorm(X, MEAN, SD, METHOD, LOWER.TAIL=NULL, LOG.P=NULL) } res } set.seed(2022) # 保证结果可复现 x <- Fluorescence_Intensity(X = 1000, MEAN = example1$mean_to_hist, SD = example1$sd_to_hist, METHOD = "rnorm") y <- Fluorescence_Intensity(X = 1000, MEAN = example2$mean_to_hist, SD = example2$sd_to_hist, METHOD = "rnorm") # 可选:验证提取的参数值 cat("x的MEAN值:", example1$mean_to_hist, "\n") cat("x的SD值:", example1$sd_to_hist, "\n") cat("y的MEAN值:", example2$mean_to_hist, "\n") cat("y的SD值:", example2$sd_to_hist, "\n")
关键说明
- 用
example1$mean_to_hist直接提取V函数返回列表中的均值,example1$sd_to_hist提取标准差,完全替代手动输入的固定值 - 删除了代码中重复定义的
Fluorescence_Intensity函数,避免函数被覆盖引发的潜在问题
内容的提问来源于stack exchange,提问作者user20397439
相关产品推荐
相关产品推荐

