Within standard R, it is common to take objects that are lists (as a data.frame is) apart and apply some function and recombine them. So using my example in an earlier message, and hoping this text-mode message is readable, try something like this to multiply each column of a data.frame by the same vector and return the data.frame.
Note the multiply operation as a function is denoted by `*` including the grave accents. > orig <- data.frame(a=1:3, b=3:1, c=c(10,15,20)) > orig a b c 1 1 3 10 2 2 2 15 3 3 1 20 > vec <- c(1, 10, 100) > as.data.frame(lapply(orig, `*`, vec)) a b c 1 1 3 10 2 20 20 150 3 300 100 2000 You can also use sapply but it returns more of a matrix than a data.frame: > sapply(orig, `*`, vec) a b c [1,] 1 3 10 [2,] 20 20 150 [3,] 300 100 2000 > class(sapply(orig, `*`, vec)) [1] "matrix" "array" Again, there are an amazing number of ways to do anything in R. -----Original Message----- From: Kelly Thompson <kt1572...@gmail.com> Cc: r-help@r-project.org <r-help@r-project.org> Sent: Sat, Apr 9, 2022 12:49 pm Subject: Re: [R] Multiplying each row of data.frame by a row in another data.frame Does this produce the desired results? Also, even if this produces your desired results, I am not sure it is the "best" way to do this. There might be better ways. data.frame( t ( t(val_df) * (weights$value) ) On Fri, Apr 8, 2022 at 9:57 PM maithili_shiva--- via R-help <r-help@r-project.org> wrote: > > Dear R forum > weights <- data.frame(id = c("ABC", "DEF", "ONS"), value = c(1, 2, 5)) > val_df <- data.frame(ABC = c(10, 20, 10, 10, 10), DEF = c(1, 2, 10, 2, 5), > ONS = c(100, 100, 200, 100, 100)) > > > weights > id value1 ABC 12 DEF 23 ONS 5 > > > val_df > ABC DEF ONS1 10 1 1002 20 2 1003 10 10 2004 10 2 >1005 10 5 100 > I wish to multilpy each row of data.frame val_df by value column of > data.frame weights. > ABC DEF ONS1 10*1 1*2 100*52 20*1 2*2 100*53 10*1 10*2 >200*54 10*1 2*2 100*55 10*1 5*2 100*5 > ie I wish to have output as > OUTPUT > ABC DEF ONS1 10 2 5002 20 4 5003 10 20 > 10004 10 4 5005 10 10 500 > > O have tried sweep function, even matrix multiplcation etc, but nothing seems > to be working. > Please guide > Regards > Maithili > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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 -- To UNSUBSCRIBE and more, see 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 -- To UNSUBSCRIBE and more, see 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.