r 中的动态变量命名

2024-03-03

structure(list(Metrics = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 
1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 
5L, 6L), .Label = c("  LINESCOMM ", "  NCNBLOC_FILE ", "  RCYCLOMATIC ", 
"  RISK ", "  RMAXLEVEL ", "  RNOEXSTAT "), class = "factor"), 
    Project = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
    2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L
    ), .Label = c("  Demo_Architect ", "  Demo_May_10 ", "  Demo_May_14 ", 
    "  NPP "), class = "factor"), Value = c(1172, 1500, 142, 
    4.241, 24, 98, 1139, 1419, 128, 3.546, 22, 85, 1172, 1500, 
    142, 4.241, 24, 98, 115008, 148903, 14539, 105.914, 604, 
    15710)), .Names = c("Metrics", "Project", "Value"), row.names = c(NA, 
-24L), class = "data.frame")->agg

我正在尝试这样做:对于每个唯一的项目名称都希望创建包含所需值的单独变量名称。

我正在尝试以下代码:

x=data.frame()
attach(agg)
r<-as.character(unique(Project))
for(i in length(agg))
{
  x<-subset(agg,Project==r[i],select=c("Project","Metrics","Value"))
  assign() #This is where i am making mistake while creating dynamic variable naming
}

换句话说,我想在每次执行 for 循环时创建单独的变量名。

注意:最好将变量名称放在“项目”列值的名称中。


assign通过提供要首先创建的变量的名称以及它应作为第二个参数的值来使用。请注意,由于您的项目名称包含前导空格,所以我另外使用了str_trim摆脱他们。

library(stringr)
projects <- levels(agg$Project)
for (p in projects) {
  x <- subset(agg, Project==p)
  assign(str_trim(p), x)    
}

现在,您的工作区中已将项目作为变量:

ls()
[1] "agg"            "Demo_Architect" "Demo_May_10"    "Demo_May_14"    "NPP"           
[6] "p"              "projects"       "x"

E.g.

> Demo_Architect
          Metrics           Project    Value
1      LINESCOMM    Demo_Architect  1172.000
2   NCNBLOC_FILE    Demo_Architect  1500.000
3    RCYCLOMATIC    Demo_Architect   142.000
4           RISK    Demo_Architect     4.241
5      RMAXLEVEL    Demo_Architect    24.000
6      RNOEXSTAT    Demo_Architect    98.000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

r 中的动态变量命名 的相关文章

随机推荐