On Dec 6, 2013, at 11:27 AM, Julio Sergio Santana wrote:

> I have a data frame whose first colum contains the names of the variables 
> and whose second colum contains the values to assign to them:
> 
>   : kkk <- data.frame(vars=c("var1", "var2", "var3"), 
>                     vals=c(10, 20, 30), stringsAsFactors=F)
> 
> If I do 
> 
>   : assign(kkk$vars[1], kkk$vals[1])
> 
> it works
> 
>   : var1
>   [1] 10
> 
> However, if I try with mapply this is what I get:
> 
>   : mapply(assign, kkk$vars, kkk$vals)
>   var1 var2 var3 
>     10   20   30 
>   : var2
>   Error: object 'var2' not found
> 
> Maybe I have not undestand how mapply and assign work. Do you have
> any comments?

I think you will find that the value returned from the mapply call was a three 
element list with the desired names and values  ... except you then gave that 
enclosing list no name and it will be garbage-collected. If you want to have 
'assign' do its magic into the global environment, then you need to supply 
'mapply' a MoreArgs argument on the other side of the ellipsis:

Usage:
mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE,
       USE.NAMES = TRUE)

So what happens if you try this:

mapply(assign,  kkk$vars, kkk$vals, MoreArgs = list(envir = .GlobalEnv)

-- 

David Winsemius
Alameda, CA, USA

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to