My mental model is that the left hand side forms a sort of "virtual vector" 
where each element really points to an element in the vector being modified. 
Then the right hand side scalar is extended in the usual repetitious way (if 
necessary) until it is a vector just as long as the "virtual vector" on the 
left. Then the right vector is assigned to the left vector, which leaves the 
designated elements in the destination vector changed.

You could work out an equivalent for loop structure, but I think it would be 
tricky to keep the behavior for different length source and destination 
assignments straight.
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go Live...
DCN:<jdnew...@dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...1k
--------------------------------------------------------------------------- 
Sent from my phone. Please excuse my brevity.

Al Roark <hrbuil...@hotmail.com> wrote:


Hi All: 
I'm looking to find out a bit more about how subassignment actually works and 
am hoping someone with knowledge of the details can fill me in (I've looked at 
the source code, but my knowledge of C is lacking).
In the case of vectors, my reading of ?"[" would indicate that for a vector, 
vec <- 1:25, vec[c(1,5,25)] <- c(101,102,103)is functionally the same as indx 
<- c(1,5,25) for (i in 1:length(indx)) vec[indx[i]] <- c(101,102,103)[i]
And in the case of a data frame, df <- data.frame(d1=1:10,d2=11:20,d3=21:30), 
df[c(1,5,10),c(1,3)] <- data.frame(a=101:103,b=104:106)is functionally the same 
as rowindx <- c(1,5,10) colindx <- c(1,3) for (i in 1:length(rowindx)) {  for 
(j in 1:length(colindx)) df[rowindx[i],colindx[j]] <- 
data.frame(a=101:103,b=104:106)[i,j] }                Obviously I've verified 
that these examples work and I realize that my loops also contain 
subassignments; what I'm really after is to understand the mechanics of 
replacing multiple elements. Is a for-loop the proper way to understand the 
sequential nature of subassignments here (even if it is not actually 
implemented using a loop)? 
Cheers,HR                                        
        [[alternative HTML version deleted]]

_____________________________________________

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.


        [[alternative HTML version deleted]]

______________________________________________
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