How to make object created within function usable outside

assign, environment-variables, function, global-variables, r

Solution

That's easy: use `<<-` for assignment to a global.

But then again, global assignment is evil and not functional. Maybe you'd rather return a list with several results from your function? Looking at your code, it seems that your second function may confuse the `return` and `print`. Make sure you return the correct data structure.

Problem

I created a function which produces a matrix as a result, but I can't figure out how to make the output of this function usable outside of the function environment, so that I could for instance save it in csv file. My code for function is the following: created function which takes url's from specific site and returns page title: ``` getTitle <- function(url) { webpage <- readLines(url) first.row <- webpage[1] start <- regexpr("<title>", first.row) end <- regexpr("</title>", first.row) title <- substr(first.row,start+7,end-1) return(title) } ``` created function which takes vector of urls and returns n*2 matrix with urls and page titles: ``` getTitles <- function(pages) { my.matrix <- matrix(NA, ncol=2, nrow=nrow(pages)) for (i in seq_along(1:nrow(pages))) { my.matrix[i,1] <- as.character(pages[i,]) my.matrix[i,2] <- getTitle(as.character(pages[i,])) } return(my.matrix) print(my.matrix)} ``` After running this functions on a sample file from here http://goo.gl/D9lLZ which I import with read.csv function and name "mypages" I get the following output: ``` getTitles(mypages) [,1] [,2] [1,] "http://support.google.com/adwords/answer/1704395" "Create your first ad campaign - AdWords Help" [2,] "http://support.google.com/adwords/answer/1704424" "How costs are calculated in AdWords - AdWords Help" [3,] "http://support.google.com/adwords/answer/2375470" "Organizing your account for success - AdWords Help" ``` This is exactly what I need, but I'd love to be able to export this output to csv file or reuse for further manipulations. However, when I try to print(my.matrix), I am getting an error saying "Error: object 'my.matrix' not found" I feel like it's quite basic gap in my knowledge, but have not been working with R for a while and could not solve that. Thanks! Sergey

Original source

Related problems