I apologize for what seems like it should be a straighforward query. I am trying to multiply a list by a numeric and thought there would be a straightforward way to do this, but the best solution I found so far has a for loop. Everything else I try seems to throw an error "non-numeric argument to binary operator" Consider the example: a <- 1 b <- 1:2 c <- 1:3 abc <- list(a,b,c) To multiply every element of abc by a numeric, say 3, I wrote a for-loop: for (i in 1:length(abc)) { abc[[i]] <- 3*abc[[i]] } Is this really the simplest way or am I missing something? Thanks! [[alternative HTML version deleted]]
On Aug 24, 2009, at 10:58 AM, Brigid Mooney wrote:> I apologize for what seems like it should be a straighforward query. > > I am trying to multiply a list by a numeric and thought there would > be a > straightforward way to do this, but the best solution I found so far > has a > for loop. > Everything else I try seems to throw an error "non-numeric argument to > binary operator" > > Consider the example: > > a <- 1 > b <- 1:2 > c <- 1:3 > abc <- list(a,b,c) > To multiply every element of abc by a numeric, say 3, I wrote a for- > loop: > > for (i in 1:length(abc)) > { > abc[[i]] <- 3*abc[[i]] > } > > Is this really the simplest way or am I missing something? > > Thanks!Try: > abc [[1]] [1] 1 [[2]] [1] 1 2 [[3]] [1] 1 2 3 > lapply(abc, "*", 3) [[1]] [1] 3 [[2]] [1] 3 6 [[3]] [1] 3 6 9 See ?lapply for more information. HTH, Marc Schwartz
Try lapply(abc, function(x) x*3) Peter Ehlers Brigid Mooney wrote:> I apologize for what seems like it should be a straighforward query. > > I am trying to multiply a list by a numeric and thought there would be a > straightforward way to do this, but the best solution I found so far has a > for loop. > Everything else I try seems to throw an error "non-numeric argument to > binary operator" > > Consider the example: > > a <- 1 > b <- 1:2 > c <- 1:3 > abc <- list(a,b,c) > To multiply every element of abc by a numeric, say 3, I wrote a for-loop: > > for (i in 1:length(abc)) > { > abc[[i]] <- 3*abc[[i]] > } > > Is this really the simplest way or am I missing something? > > Thanks! > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > >