Re: [R] Assigning several lists to variables whose names are contained in other variables
Hello, I believe that the point we are missing is that datatable$column stores the *names* of the graphs, not the graph objects themselves. So in the loop the objects must be retrieved with mget() or get(). First create a reproducible example. library(tidygraph) my_function <- function(g){ stopifnot(inherits(g, "igraph")) g %>% mutate(centrality = centrality_pagerank()) } MYSUBNET1 <- create_notable('bull') iris_clust <- hclust(dist(iris[1:4])) MYSUBNET2 <- as_tbl_graph(iris_clust) MYSUBNET3 <- play_smallworld(1, 100, 3, 0.05) datatable <- data.frame(column = paste0("MYSUBNET", 1:3)) Now apply the function above to each of the "tbl_graph" objects. 1. Get all objects and apply the function in one instruction. Then assign the new names. result <- lapply(mget(datatable$column, envir = .GlobalEnv), my_function) names(result) <- paste("subnet", datatable$column, sep = "_") 2. Loop through the column with lapply, getting one object and applying the function one at a time. Then assign the new names. result2 <- lapply(datatable$column, function(net_name){ NET <- get(net_name, envir = .GlobalEnv) my_function(NET) }) names(result2) <- paste("subnet", datatable$column, sep = "_") 3. Loop through the column with a for loop, getting one object and applying the function one at a time. Then assign the new names. result3 <- vector("list", length = nrow(datatable)) for(i in seq_along(datatable$column)){ net_name <- datatable$column[i] NET <- get(net_name, envir = .GlobalEnv) result3[[i]] <- my_function(NET) } names(result3) <- paste("subnet", datatable$column, sep = "_") 4. Now check that all 3 solutions give the same result. identical(result, result2) #[1] TRUE identical(result, result3) #[1] TRUE Is this it? Rui Barradas Às 17:23 de 09/04/21, Wolfgang Grond escreveu: As I wrote before, I calculate tbl_graph objects, which will be joined afterwards. Not too much, the number of graphs to calculate is in the range between 5 to 20. Further steps are not automated, because they depend on how the single graphs look like, and which of them will be joined. For this reason I thought it would be nice to have the single tbl_ graph objects stored in variables having the name of the graph. For this reason I tried to find a better solution instead of assigning each graph by hand: subnet_MYSUBNET <- my_function(MYSUBNET) To my understanding it is therefore neccessary to assign the result of the function to a variable whose name consists of a fixed string and the content of a further variable. That was the intention for me to ask. Am 9. April 2021 17:22:05 MESZ schrieb David Winsemius : On 4/9/21 5:21 AM, Wolfgang Grond wrote: Greg, here I get the error message: Error my_function(val) : cannot find function my_function. I'm guessing that you are following someone else's blog and have failed one of two things: - understand that what was meant by the author was that you were assumed to have a function in mind to use for a programming strategy being illustrated - or you were copying and pasting only part of a blog and failed to paste in the code from above where there was earlier code defining `my_function` Am 9. April 2021 12:35:40 MESZ schrieb Greg Minshall : Wolfgang, result <- assign(paste("subnet_", val, sep = "") result <- my_function(val) i don't understand why you are twice assigning to =result=. also, the first assignment doesn't seem well formatted (t's missing a value?). did you mean something like : assign(paste("subnet_", val, sep = ""), my_function(val)) (which i would think should work)? cheers, Greg __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. - Numberland - Dr. Wolfgang Grond Diplomphysiker, TQM-Assessor (EFQM) Six Sigma Green Belt Ingenieurbüro / Engineering Consultancy Lohfeld 20, DE-95326 Kulmbach, Germany Phone: +49 9221 6919131 Fax: +49 9221 6919156 Mail: gr...@numberland.com URL: http://www.numberland.com [[alternative HTML version deleted]] __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. [[alternative HTML version deleted]] __ R-help@r-project.org
Re: [R] Assigning several lists to variables whose names are contained in other variables
I freely admit that I do not understand what you mean. But it sounds like you are trying to make things more complicated than necessary. Perhaps this little example may help clarify the issues: > a <- 1; b <- 2; d <- c(3,5) > stuff <- lapply(list(a,b,d),function(x)x^2) > stuff [[1]] [1] 1 [[2]] [1] 4 [[3]] [1] 9 25 > stuff[[3]] [1] 9 25 Note that one may apply (almost) any function that returns objects (and doesn't have nasty side effects, I suppose), including graphical objects, and store them in the list that is returned. These objects can then be accessed as usual and manipulated/displayed/assigned ... whatever. If this misunderstands your query and is irrelevant, do not bother to explain. Or reply. Won't be the first time I did not get it. If OTOH this is a complete mystery to you, then you need to spend some time learning about R lists and how. to use them. Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Fri, Apr 9, 2021 at 7:22 PM Wolfgang Grond wrote: > As I wrote before, I calculate tbl_graph objects, which will be joined > afterwards. Not too much, the number of graphs to calculate is in the range > between 5 to 20. > > Further steps are not automated, because they depend on how the single > graphs look like, and which of them will be joined. > > For this reason I thought it would be nice to have the single tbl_ graph > objects stored in variables having the name of the graph. > > For this reason I tried to find a better solution instead of assigning > each graph by hand: > > subnet_MYSUBNET <- my_function(MYSUBNET) > > To my understanding it is therefore neccessary to assign the result of the > function to a variable whose name consists of a fixed string and the > content of a further variable. > > That was the intention for me to ask. > > Am 9. April 2021 17:22:05 MESZ schrieb David Winsemius < > dwinsem...@comcast.net>: > > > >On 4/9/21 5:21 AM, Wolfgang Grond wrote: > >> Greg, > >> > >> here I get the error message: > >> > >> Error my_function(val) : > >> > >> cannot find function my_function. > > > >I'm guessing that you are following someone else's blog and have failed > > > >one of two things: > > > >- understand that what was meant by the author was that you were > >assumed > >to have a function in mind to use for a programming strategy being > >illustrated > > > >- or you were copying and pasting only part of a blog and failed to > >paste in the code from above where there was earlier code defining > >`my_function` > > > >> > >> Am 9. April 2021 12:35:40 MESZ schrieb Greg Minshall > >: > >>> Wolfgang, > >>> > result <- assign(paste("subnet_", val, sep = "") > > result <- my_function(val) > >>> i don't understand why you are twice assigning to =result=. also, > >the > >>> first assignment doesn't seem well formatted (t's missing a value?). > >>> > >>> did you mean something like > >>> > >>> : assign(paste("subnet_", val, sep = ""), my_function(val)) > >>> > >>> (which i would think should work)? > >>> > >>> cheers, Greg > >>> > >>> __ > >>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >>> https://stat.ethz.ch/mailman/listinfo/r-help > >>> PLEASE do read the posting guide > >>> http://www.R-project.org/posting-guide.html > >>> and provide commented, minimal, self-contained, reproducible code. > >> > >> - > >> Numberland - Dr. Wolfgang Grond > >> Diplomphysiker, TQM-Assessor (EFQM) > >> Six Sigma Green Belt > >> Ingenieurbüro / Engineering Consultancy > >> Lohfeld 20, DE-95326 Kulmbach, Germany > >> Phone: +49 9221 6919131 > >> Fax: +49 9221 6919156 > >> Mail: gr...@numberland.com > >> URL: http://www.numberland.com > >> [[alternative HTML version deleted]] > >> > >> __ > >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >> https://stat.ethz.ch/mailman/listinfo/r-help > >> PLEASE do read the posting guide > >http://www.R-project.org/posting-guide.html > >> and provide commented, minimal, self-contained, reproducible code. > > > >__ > >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >https://stat.ethz.ch/mailman/listinfo/r-help > >PLEASE do read the posting guide > >http://www.R-project.org/posting-guide.html > >and provide commented, minimal, self-contained, reproducible code. > > [[alternative HTML version deleted]] > > __ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]]
Re: [R] Assigning several lists to variables whose names are contained in other variables
As I wrote before, I calculate tbl_graph objects, which will be joined afterwards. Not too much, the number of graphs to calculate is in the range between 5 to 20. Further steps are not automated, because they depend on how the single graphs look like, and which of them will be joined. For this reason I thought it would be nice to have the single tbl_ graph objects stored in variables having the name of the graph. For this reason I tried to find a better solution instead of assigning each graph by hand: subnet_MYSUBNET <- my_function(MYSUBNET) To my understanding it is therefore neccessary to assign the result of the function to a variable whose name consists of a fixed string and the content of a further variable. That was the intention for me to ask. Am 9. April 2021 17:22:05 MESZ schrieb David Winsemius : > >On 4/9/21 5:21 AM, Wolfgang Grond wrote: >> Greg, >> >> here I get the error message: >> >> Error my_function(val) : >> >> cannot find function my_function. > >I'm guessing that you are following someone else's blog and have failed > >one of two things: > >- understand that what was meant by the author was that you were >assumed >to have a function in mind to use for a programming strategy being >illustrated > >- or you were copying and pasting only part of a blog and failed to >paste in the code from above where there was earlier code defining >`my_function` > >> >> Am 9. April 2021 12:35:40 MESZ schrieb Greg Minshall >: >>> Wolfgang, >>> result <- assign(paste("subnet_", val, sep = "") result <- my_function(val) >>> i don't understand why you are twice assigning to =result=. also, >the >>> first assignment doesn't seem well formatted (t's missing a value?). >>> >>> did you mean something like >>> >>> : assign(paste("subnet_", val, sep = ""), my_function(val)) >>> >>> (which i would think should work)? >>> >>> cheers, Greg >>> >>> __ >>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> PLEASE do read the posting guide >>> http://www.R-project.org/posting-guide.html >>> and provide commented, minimal, self-contained, reproducible code. >> >> - >> Numberland - Dr. Wolfgang Grond >> Diplomphysiker, TQM-Assessor (EFQM) >> Six Sigma Green Belt >> Ingenieurbüro / Engineering Consultancy >> Lohfeld 20, DE-95326 Kulmbach, Germany >> Phone: +49 9221 6919131 >> Fax: +49 9221 6919156 >> Mail: gr...@numberland.com >> URL: http://www.numberland.com >> [[alternative HTML version deleted]] >> >> __ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > >__ >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code. [[alternative HTML version deleted]] __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Assigning several lists to variables whose names are contained in other variables
David, I don't think that this is the case. When I do the calculation like this subnet_MYSUBNET <- my_function(MYSUBNET), i.e. assigning a variable by hand to each function result, all is fine. Am 9. April 2021 17:22:05 MESZ schrieb David Winsemius : > >On 4/9/21 5:21 AM, Wolfgang Grond wrote: >> Greg, >> >> here I get the error message: >> >> Error my_function(val) : >> >> cannot find function my_function. > >I'm guessing that you are following someone else's blog and have failed > >one of two things: > >- understand that what was meant by the author was that you were >assumed >to have a function in mind to use for a programming strategy being >illustrated > >- or you were copying and pasting only part of a blog and failed to >paste in the code from above where there was earlier code defining >`my_function` > >> >> Am 9. April 2021 12:35:40 MESZ schrieb Greg Minshall >: >>> Wolfgang, >>> result <- assign(paste("subnet_", val, sep = "") result <- my_function(val) >>> i don't understand why you are twice assigning to =result=. also, >the >>> first assignment doesn't seem well formatted (t's missing a value?). >>> >>> did you mean something like >>> >>> : assign(paste("subnet_", val, sep = ""), my_function(val)) >>> >>> (which i would think should work)? >>> >>> cheers, Greg >>> >>> __ >>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> PLEASE do read the posting guide >>> http://www.R-project.org/posting-guide.html >>> and provide commented, minimal, self-contained, reproducible code. >> >> - >> Numberland - Dr. Wolfgang Grond >> Diplomphysiker, TQM-Assessor (EFQM) >> Six Sigma Green Belt >> Ingenieurbüro / Engineering Consultancy >> Lohfeld 20, DE-95326 Kulmbach, Germany >> Phone: +49 9221 6919131 >> Fax: +49 9221 6919156 >> Mail: gr...@numberland.com >> URL: http://www.numberland.com >> [[alternative HTML version deleted]] >> >> __ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > >__ >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code. [[alternative HTML version deleted]] __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Assigning several lists to variables whose names are contained in other variables
Folks, first of all - thanks a lot for your hints! I will try each again and think about, why I get error messages. But to resume: if I understand you right: there is no way to do something like this: $name = $result? Regards Wolfgang Am 9. April 2021 15:43:27 MESZ schrieb Rui Barradas : >Hello, > >my_function seems to be a function you have defined somewhere in your >code. >In your original post you mention it 3 times, this is the first one: > > >subnet_MYSUBNET <- my_function(MYSUBNET) > > >So Ivan's and Greg's code should work, they use a function you haven't >posted but is assumed to exist. > >Note: if you are more comfortable with for loops than with *apply, I >would rewrite Ivan's for loop solution as > > >results <- vector("list", length = nrow(datatable)) >for(val in datatable$column) { > results[[as.character(val)]] <- my_function(val) >} > > >To keep extending a vector or list object in a loop is inefficient, >this >creates the list with the right length beforehand. > > >Hope this helps, > >Rui Barradas > >Às 13:21 de 09/04/21, Wolfgang Grond escreveu: >> Greg, >> >> here I get the error message: >> >> Error my_function(val) : >> >> cannot find function my_function. >> >> Am 9. April 2021 12:35:40 MESZ schrieb Greg Minshall >: >>> Wolfgang, >>> result <- assign(paste("subnet_", val, sep = "") result <- my_function(val) >>> >>> i don't understand why you are twice assigning to =result=. also, >the >>> first assignment doesn't seem well formatted (t's missing a value?). >>> >>> did you mean something like >>> >>> : assign(paste("subnet_", val, sep = ""), my_function(val)) >>> >>> (which i would think should work)? >>> >>> cheers, Greg >>> >>> __ >>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> PLEASE do read the posting guide >>> http://www.R-project.org/posting-guide.html >>> and provide commented, minimal, self-contained, reproducible code. >> >> >> - >> Numberland - Dr. Wolfgang Grond >> Diplomphysiker, TQM-Assessor (EFQM) >> Six Sigma Green Belt >> Ingenieurbüro / Engineering Consultancy >> Lohfeld 20, DE-95326 Kulmbach, Germany >> Phone: +49 9221 6919131 >> Fax: +49 9221 6919156 >> Mail: gr...@numberland.com >> URL: http://www.numberland.com >> [[alternative HTML version deleted]] >> >> __ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> > >__ >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code. [[alternative HTML version deleted]] __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Assigning several lists to variables whose names are contained in other variables
On 4/9/21 5:21 AM, Wolfgang Grond wrote: Greg, here I get the error message: Error my_function(val) : cannot find function my_function. I'm guessing that you are following someone else's blog and have failed one of two things: - understand that what was meant by the author was that you were assumed to have a function in mind to use for a programming strategy being illustrated - or you were copying and pasting only part of a blog and failed to paste in the code from above where there was earlier code defining `my_function` Am 9. April 2021 12:35:40 MESZ schrieb Greg Minshall : Wolfgang, result <- assign(paste("subnet_", val, sep = "") result <- my_function(val) i don't understand why you are twice assigning to =result=. also, the first assignment doesn't seem well formatted (t's missing a value?). did you mean something like : assign(paste("subnet_", val, sep = ""), my_function(val)) (which i would think should work)? cheers, Greg __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. - Numberland - Dr. Wolfgang Grond Diplomphysiker, TQM-Assessor (EFQM) Six Sigma Green Belt Ingenieurbüro / Engineering Consultancy Lohfeld 20, DE-95326 Kulmbach, Germany Phone: +49 9221 6919131 Fax: +49 9221 6919156 Mail: gr...@numberland.com URL: http://www.numberland.com [[alternative HTML version deleted]] __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Assigning several lists to variables whose names are contained in other variables
Hello, my_function seems to be a function you have defined somewhere in your code. In your original post you mention it 3 times, this is the first one: subnet_MYSUBNET <- my_function(MYSUBNET) So Ivan's and Greg's code should work, they use a function you haven't posted but is assumed to exist. Note: if you are more comfortable with for loops than with *apply, I would rewrite Ivan's for loop solution as results <- vector("list", length = nrow(datatable)) for(val in datatable$column) { results[[as.character(val)]] <- my_function(val) } To keep extending a vector or list object in a loop is inefficient, this creates the list with the right length beforehand. Hope this helps, Rui Barradas Às 13:21 de 09/04/21, Wolfgang Grond escreveu: Greg, here I get the error message: Error my_function(val) : cannot find function my_function. Am 9. April 2021 12:35:40 MESZ schrieb Greg Minshall : Wolfgang, result <- assign(paste("subnet_", val, sep = "") result <- my_function(val) i don't understand why you are twice assigning to =result=. also, the first assignment doesn't seem well formatted (t's missing a value?). did you mean something like : assign(paste("subnet_", val, sep = ""), my_function(val)) (which i would think should work)? cheers, Greg __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. - Numberland - Dr. Wolfgang Grond Diplomphysiker, TQM-Assessor (EFQM) Six Sigma Green Belt Ingenieurbüro / Engineering Consultancy Lohfeld 20, DE-95326 Kulmbach, Germany Phone: +49 9221 6919131 Fax: +49 9221 6919156 Mail: gr...@numberland.com URL: http://www.numberland.com [[alternative HTML version deleted]] __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Assigning several lists to variables whose names are contained in other variables
Greg, here I get the error message: Error my_function(val) : cannot find function my_function. Am 9. April 2021 12:35:40 MESZ schrieb Greg Minshall : >Wolfgang, > >> result <- assign(paste("subnet_", val, sep = "") >> >> result <- my_function(val) > >i don't understand why you are twice assigning to =result=. also, the >first assignment doesn't seem well formatted (t's missing a value?). > >did you mean something like > >: assign(paste("subnet_", val, sep = ""), my_function(val)) > >(which i would think should work)? > >cheers, Greg > >__ >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code. - Numberland - Dr. Wolfgang Grond Diplomphysiker, TQM-Assessor (EFQM) Six Sigma Green Belt Ingenieurbüro / Engineering Consultancy Lohfeld 20, DE-95326 Kulmbach, Germany Phone: +49 9221 6919131 Fax: +49 9221 6919156 Mail: gr...@numberland.com URL: http://www.numberland.com [[alternative HTML version deleted]] __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Assigning several lists to variables whose names are contained in other variables
Ivan, same situation when I try your list() solution: Error in eval ... : object 'function' not found ( I think anything about my_function is meant). Am 9. April 2021 13:43:57 MESZ schrieb Ivan Krylov : >Dear Wolfgang, > >On Fri, 9 Apr 2021 11:48:55 +0200 >Wolfgang Grond wrote: > >> I want to assign the subnets to variables whose names contain the >> name of the subnet > >Apologies if this sounds too opinionated, but creating variable names >from variable values is a FAQ in a different dynamic language: > >https://perldoc.perl.org/perlfaq7#How-can-I-use-a-variable-as-a-variable-name? > >Most of the explanation doesn't apply to R, of course, but the main >idea here is to use data structures instead of causing (potential, >unlikely, but still) conflicts in the variable namespace. What if you >create a list of function values instead of just a bunch of variables? > >results <- list() >for(i in 1:nrow(datatable)) { > val <- datatable$column[i] > results[[as.character(val)]] <- my_function(val) >} > >Or even > >results <- lapply(setNames(nm = datatable$column), my_function) > >Wouldn't that be more convenient? > >-- >Best regards, >Ivan > >__ >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code. - Numberland - Dr. Wolfgang Grond Diplomphysiker, TQM-Assessor (EFQM) Six Sigma Green Belt Ingenieurbüro / Engineering Consultancy Lohfeld 20, DE-95326 Kulmbach, Germany Phone: +49 9221 6919131 Fax: +49 9221 6919156 Mail: gr...@numberland.com URL: http://www.numberland.com [[alternative HTML version deleted]] __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Assigning several lists to variables whose names are contained in other variables
Dear Ivan, when I try your solution with lapply as below I get the following error message: Error in eval ... : object 'function' not found ( I think anything about my_function is meant). Am 9. April 2021 13:43:57 MESZ schrieb Ivan Krylov : >Dear Wolfgang, > >On Fri, 9 Apr 2021 11:48:55 +0200 >Wolfgang Grond wrote: > >> I want to assign the subnets to variables whose names contain the >> name of the subnet > >Apologies if this sounds too opinionated, but creating variable names >from variable values is a FAQ in a different dynamic language: > >https://perldoc.perl.org/perlfaq7#How-can-I-use-a-variable-as-a-variable-name? > >Most of the explanation doesn't apply to R, of course, but the main >idea here is to use data structures instead of causing (potential, >unlikely, but still) conflicts in the variable namespace. What if you >create a list of function values instead of just a bunch of variables? > >results <- list() >for(i in 1:nrow(datatable)) { > val <- datatable$column[i] > results[[as.character(val)]] <- my_function(val) >} > >Or even > >results <- lapply(setNames(nm = datatable$column), my_function) > >Wouldn't that be more convenient? > >-- >Best regards, >Ivan > >__ >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code. [[alternative HTML version deleted]] __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Assigning several lists to variables whose names are contained in other variables
Dear Wolfgang, On Fri, 9 Apr 2021 11:48:55 +0200 Wolfgang Grond wrote: > I want to assign the subnets to variables whose names contain the > name of the subnet Apologies if this sounds too opinionated, but creating variable names from variable values is a FAQ in a different dynamic language: https://perldoc.perl.org/perlfaq7#How-can-I-use-a-variable-as-a-variable-name? Most of the explanation doesn't apply to R, of course, but the main idea here is to use data structures instead of causing (potential, unlikely, but still) conflicts in the variable namespace. What if you create a list of function values instead of just a bunch of variables? results <- list() for(i in 1:nrow(datatable)) { val <- datatable$column[i] results[[as.character(val)]] <- my_function(val) } Or even results <- lapply(setNames(nm = datatable$column), my_function) Wouldn't that be more convenient? -- Best regards, Ivan __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Assigning several lists to variables whose names are contained in other variables
Wolfgang, > result <- assign(paste("subnet_", val, sep = "") > > result <- my_function(val) i don't understand why you are twice assigning to =result=. also, the first assignment doesn't seem well formatted (t's missing a value?). did you mean something like : assign(paste("subnet_", val, sep = ""), my_function(val)) (which i would think should work)? cheers, Greg __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Assigning several lists to variables whose names are contained in other variables
Hi I may be wrong but > result <- assign(paste("subnet_", val, sep = "") here you miss the right parentheses maybe you intended assign(result, paste("subnet_", val, sep = "")) > result <- my_function(val) but here you change (rewrite) the result variable to my_function result So your overall cycle gives you only one result variable containing last value computed by my_function. Cheers Petr > -Original Message- > From: R-help On Behalf Of Wolfgang Grond > Sent: Friday, April 9, 2021 11:49 AM > To: mailman, r-help > Subject: [R] Assigning several lists to variables whose names are contained > in > other variables > > Dear all, > > I'm creating a list (which is a tbl_graph) by a function, and assign the > result to > a variable: > > subnet_MYSUBNET <- my_function(MYSUBNET) > > # MYSUBNET: a tbl_graph > > Because there are multiple subnets to create, I can get the names of the > subnets (MYSUBNET1, MYSUBNET2, MYSUBNET3, etc.) from a row in a > dataframe column. > > subnet_MYSUBNET <- my_function(datatable$column[i]) > > Because I know how many subnets to create - nrow(dataframe) I want to > assign the subnets to variables whose names contain the name of the subnet > > For this to work I have to assign a variable name which is contained in an > other variable name: > > # > > for(i in 1:nrow(datatable)) { > > val <- datatable$column[i] > > result <- assign(paste("subnet_", val, sep = "") > > result <- my_function(val) > > } > > this works in bash, but seems not to work in R - I don't succeed at least. > > Am I wrong? > > Where is my mistake? > > Many thanks in advance for any hint. > > Wolfgang > > > > [[alternative HTML version deleted]] > > __ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting- > guide.html > and provide commented, minimal, self-contained, reproducible code. __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
[R] Assigning several lists to variables whose names are contained in other variables
Dear all, I'm creating a list (which is a tbl_graph) by a function, and assign the result to a variable: subnet_MYSUBNET <- my_function(MYSUBNET) # MYSUBNET: a tbl_graph Because there are multiple subnets to create, I can get the names of the subnets (MYSUBNET1, MYSUBNET2, MYSUBNET3, etc.) from a row in a dataframe column. subnet_MYSUBNET <- my_function(datatable$column[i]) Because I know how many subnets to create - nrow(dataframe) I want to assign the subnets to variables whose names contain the name of the subnet For this to work I have to assign a variable name which is contained in an other variable name: # for(i in 1:nrow(datatable)) { val <- datatable$column[i] result <- assign(paste("subnet_", val, sep = "") result <- my_function(val) } this works in bash, but seems not to work in R - I don't succeed at least. Am I wrong? Where is my mistake? Many thanks in advance for any hint. Wolfgang [[alternative HTML version deleted]] __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.