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" <[email protected]> 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]]
______________________________________________
[email protected] 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.