Hi Spencer, One piece is that a data frame of the same dimensions as went in comes out. The second piece is that the vector is recycled.
So in your first example: data.frame(1) * 1:4 you only end up with the first element: data.frame(1) * 1 If you try: data.frame(1) * 4:1 you get a data frame with a value of 4. Now for: data.frame(1:2, 3:4) * 5:7 recycling kicks in again, and you get: 1 * 5, 2 * 6, 3 * 7, and 4 * 5 When working with vectors, you get recycling and it expands to the greater length vector: 1:3 * 1:6 has length 6. But data frames are sort of a 'higher' class and the dimensions of the data frame trump the vector. A slightly different behavior is observed for matrices: matrix(1:6, ncol=2) * 1:3 Gives recycling as expected to the longer of the vectors, but matrix(1:6, ncol=2) * 1:9 gives an error, but the error is _not_ directly in the multiplication, as it were, but rather the results (which because matrices are stored as vectors has expanded to be the length of the longer vector, here 1:9) do not match the input dimensions of the matrix. In particular, this is the same as trying to do: x <- 1:9 attributes(x)$dim <- c(3, 2) Error in attributes(x)$dim <- c(3, 2) : dims [product 6] do not match the length of object [9] basically, R gets the result of 1:6 * 1:9, but then cannot format it back as a matrix, because the saved dimensions do not fit the new resulting data. You can verify that R does indeed to the calculations if you go under the hood --- the multiplication is done, and then it tries to apply the dims and it errors out. Cheers, Josh On Wed, Apr 2, 2014 at 11:42 PM, Spencer Graves < spencer.gra...@structuremonitoring.com> 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. > -- Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://joshuawiley.com/ Senior Analyst - Elkhart Group Ltd. http://elkhartgroup.com 260.673.5518 [[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.