This is because your vector is recycled:

data.frame(1)*1:4 = data.frame(1)*c(1,2,3,4)

only the first element is needed since the data frame has nothing else to multiply with c(2,3,4)


(x<-data.frame(1:2, 3:4))
  X1.2 X3.4
1    1    3
2    2    4

(y<-x*5:7)

y[1,1] = x[1,1] * 5
y[2,1] = x[2,1] * 6
y[1,2] = x[1,2] * 7
y[2,2] = x[2,2] * 5

since you have e vector with length 3, for the 4th entry in the data.frame the first element in the vector is recycled.

hope this helps



On 03-04-2014 08:42, Spencer Graves wrote:
Hello, All:


      What's the logic behind "data.frame(1)*1:4" producing a scalar
1?  Or the following:


 data.frame(1:2, 3:4)*5:7
  X1.2 X3.4
1    5   21
2   12   20


      I stumbled over this, because I thought I was multiplying a
scalar times a vector, and obtaining a scalar rather than the
anticipated vector.  I learned that my "scalar" was in fact a
data.frame with one row and one column.


      What am I missing?


      Thanks,
      Spencer

______________________________________________
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.

______________________________________________
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