R语言中能否将某向量的取值作为另一个向量的命名?
方法1:使用assign()函数直接生成独立变量
你要的动态命名效果可以直接用R内置的assign()函数实现,这个函数的第一个参数传入你要生成的变量名字符串,第二个参数传入对应的值,替换你原来不合法的RMSE(outYr value) <- ...写法即可,修改后的完整可运行代码如下:
require(Metrics) itrcnt <- 10 count <- 0 x <- 1:99 y <- 2:100 for( i in 1:itrcnt) { outYr = 1998 + count print(paste(outYr,'has been excluded')) # 动态生成RMSE+年份的变量 assign(paste0("RMSE", outYr), rmse(x,y)) count <- count + 1 }
运行后你就能在环境中直接看到RMSE1998、RMSE1999一直到RMSE2007这些独立变量。
方法2:更推荐的命名列表存储方案
生成大量独立散变量后续批量处理会很麻烦,更建议你把结果存在命名列表里,后续不管是取单个值还是批量遍历都更方便,实现代码如下:
require(Metrics) itrcnt <- 10 count <- 0 x <- 1:99 y <- 2:100 # 初始化空列表存结果 rmse_results <- list() for( i in 1:itrcnt) { outYr = 1998 + count print(paste(outYr,'has been excluded')) # 用年份作为列表的键存储结果 rmse_results[[as.character(outYr)]] <- rmse(x,y) count <- count + 1 }
后续需要取对应年份的结果直接用rmse_results[["1998"]]即可,如果确实需要导出成独立变量,再加一行list2env(rmse_results, envir = .GlobalEnv)就能实现和方法1一样的效果。
内容的提问来源于stack exchange,提问作者PDiddyA
相关产品推荐
相关产品推荐

