Hi Neal, Thanks for your reply. dat<-data.frame(x1=1:3,x2=4:6,x3=7:9) z<-c(0.1,10,100) #I wanna 0.1*x1,10*x2,100*x3
According to your answer: > as.matrix(dat)*z x1 x2 x3 [1,] 0.1 0.4 0.7 [2,] 20.0 50.0 80.0 [3,] 300.0 600.0 900.0 The above is not what I want. What I want is: x1 x2 x3 1 0.1 40 700 2 0.2 50 800 3 0.3 60 900 At 2012-12-31 00:13:33,"Neal H. Walfield" <n...@walfield.org> wrote: >At Sun, 30 Dec 2012 18:26:45 +0800 (CST), >meng wrote: >> >> hi all: >> Here's a dataframe(dat) and a vector(z): >> >> dat: >> x1 x2 x3 >> 0.2 1.2 2.5 >> 0.5 2 5 >> 0.8 3 6.2 >> >> > z >> [1] 10 100 100 >> >> I wanna do the following: >> 10*x1,100*x2,1000*x3 >> >> My solution is using the loop for z and dat(since the length of z is the >> same as ncol of dat),which is tedious. >> I wanna an efficient solution to do it . > >You could convert the data frame to a matrix: > >> dat=data.frame(x1=1:3, x2=11:13) >> dat > x1 x2 >1 1 11 >2 2 12 >3 3 13 >> as.matrix(dat) * c(3, 2) > x1 x2 >[1,] 3 22 >[2,] 4 36 >[3,] 9 26 > >Neal [[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.