[R] how to assign a value?

David Winsemius dwinsemius at comcast.net
Sun Dec 11 17:00:55 CET 2011


On Dec 11, 2011, at 10:27 AM, Jinsong Zhao wrote:

> Hi there,
>
> I hope to modify values in a vector or matrix in the following code:
>
> for (i in 1:9) {
>   assign(paste("a.", i, sep = ""), 1:i)
>   get(paste("a.", i, sep = ""))[i] <- i+50
> }

Just one matrix? Then you seem to have inappropriately borrowed using  
"." as an indexing operation. In R that is just another character when  
used as an object name. "a.1" is notgoing to evaulate to  a[1].  Look  
at what you would have had after

 > for (i in 1:9) {
+   assign(paste("a.", i, sep = ""), 1:i)
+   }
 > ls()
  [1] "a"                    "a.1"                  "a.2"
  [4] "a.3"                  "a.4"                  "a.5"
  [7] "a.6"                  "a.7"                  "a.8"
[10] "a.9"

 > a.1
[1] 1
 > a.2
[1] 1 2

Each of those assign() operations created a single vector of length i.  
I doubt that was what you intended,

Better would be to describe your objects and your intentions, rather  
than expecting us to understand your goals by just looking at code  
that doesn't achieve thos goals. (There is no `get<-` function which  
was the source of the  error.)


>
> I get the following error message:
>
> Error in get(paste("a.", i, sep = ""))[i] <- i + 50 :
>  target of assignment expands to non-language object
>
> I have read the FAQ "How can I turn a string into a variable?",  
> however, I don't find a way to deal with:
>
> get(paste("a.", i, sep = ""))[i] <- i+50
>
> Any suggestions? Thanks in advance!
>
> Regards,
> Jinsong
>
> ______________________________________________
> R-help at 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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list