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
I am trying to do: For each unique project name is want create separate variable name containing the desired values.
I am trying the below code:
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
}
in other words i want to create separate variable name each time the for loop executes.
NOTE: it is preferred to have variable names to be in the name of "project"columns values.
In programming, dynamic variable names don't have a specific name hard-coded in the script. They are named dynamically with string values from other sources.
A dynamic variable is a variable you can declare for a StreamBase module that can thereafter be referenced by name in expressions in operators and adapters in that module. In the declaration, you can link each dynamic variable to an input or output stream in the containing module.
assign
is used by supplying the name of the variable you want to create first and the value it should have as second argument. Note that as your project names contain leading blanks I additionally used str_trim
to get rid of them.
library(stringr)
projects <- levels(agg$Project)
for (p in projects) {
x <- subset(agg, Project==p)
assign(str_trim(p), x)
}
Now you have the projects as variables in your workspace:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With