R语言中如何通过循环生成自定义名称变量并存储运算结果
解决方法
你的代码里直接用字符串赋值变量的方式在R里是行不通的,因为R无法将字符串直接识别为变量名进行赋值操作。下面提供两种可行的方案:
方案1:使用assign()函数动态创建变量
assign()函数可以根据字符串指定的名称创建变量并赋值,同时要注意动态生成svyby需要的公式(因为i是字符串,直接写~i会把i当作变量而非列名):
for (i in colnames(data)){ # 动态生成公式 resp_formula <- as.formula(paste("~", i)) # 生成目标变量名 var_name <- paste("estim", i, "global", sep = ".") # 赋值到指定变量 assign(var_name, svyby(resp_formula, by = ~Global, dis, svymean, level = 0.95, vartype = c("se", "ci"), deff = TRUE)) }
运行后你就能得到estim.1_tv.global这类符合命名要求的变量,每个变量对应运算后的数据框。
方案2:将结果存入列表(更推荐)
如果需要批量管理这些结果数据框,把它们存在一个列表里会更方便,避免生成大量分散的变量:
# 创建空列表 estim_results <- list() for (i in colnames(data)){ resp_formula <- as.formula(paste("~", i)) var_name <- paste("estim", i, "global", sep = ".") # 将结果存入列表,用指定名称作为列表元素名 estim_results[[var_name]] <- svyby(resp_formula, by = ~Global, dis, svymean, level = 0.95, vartype = c("se", "ci"), deff = TRUE) }
后续可以通过estim_results$estim.1_tv.global来调用对应的数据框,这样更便于批量操作和维护。
内容的提问来源于stack exchange,提问作者user21036439
相关产品推荐
相关产品推荐

