当前位置: 首页>移动开发>正文

r语言 将两个向量合并 r语言向量相乘

本节书摘来自异步社区《R语言初学指南》一书中的第1章,第1.2节,作者【美】Brian Dennis(布莱恩·丹尼斯),更多章节内容可以访问云栖社区“异步社区”公众号查看

1.2 向量

R语言初学指南
R可以处理“一整串”的数字。例如:

> x=c(3,−2,4,7,5,−1,0)
> y=4
> x+y
[1] 7 2 8 11 9 3 4

上面第一行中的命令c()用来将3,−2,4,7,5,−1和0“合并”成一个列表,将该列表命名为x。在R中,由数字组成的列表有一个专门术语:向量。在这里,x是一个由7个元素组成的向量,y的值是4。表达式x+y的意思是把x中的每一个元素都加4。不过,如果y和x一样,都是向量,那么会出现什么情况呢?

> y=c(1,2,3,4,5,6,7)
> z=x+y
> z
[1] 4 0 7 11 10 5 7

这里x+y代表,x的元素与y中对应的元素分别相加!

回忆一下四年级时,老师曾给出一些大数字相乘的题目作为家庭作业:




r语言 将两个向量合并 r语言向量相乘,r语言 将两个向量合并 r语言向量相乘_优先级,第1张


把上面一排数字和下面一排数字各自看成一个向量,分别命名为“top”和“bot”。然后,把两个向量相乘:

> top=c(75634,2339,103458,48761,628003)
> bot=c(567,138,974,856,402)
> top*bot
[1] 42884478  322782  100768092  41739416  252457206

这里有几个地方需要注意:(1)在写R语句时,不要用逗号把比较大的数按照三位一组的方式隔开。逗号在R中有其他的用处,比如,在命令c()中,需用逗号把不同的数分开;(2)要按照同样的顺序,把两组数分别输入到两个向量中;(3)数之间可有空格,但必须要用逗号把数隔开;(4)不要把这个告诉四年级的小朋友。

在R中,所有的算术运算都可以用在向量上,比如,加减运算、乘除运算,甚至包括乘方运算。像刚才看到的那样,如果对一个数和一个向量进行运算,那么这个数会作用在向量的每个元素上;如果对两个长度相同的向量进行运算,则两个向量中对应的元素会分别进行运算。

向量运算的优先级与算术运算一样,并且也可用括号来确定哪些运算需要优先进行:

> ted=c(1,2,3)
> kat=c(−1,1,.5)
> 2*(ted+kat)
[1] 0 6 7
> 2*ted+kat
[1] 1 5 6.5

如果在输入指令时出现错误,只要再重新输入一遍正确的指令即可。R会计算并保存最终输入的版本。同时,如果一行指令太长,可在任意一个明显不完整的R命令(R是很智能的!)处敲击回车键,这时,R会出现一个像加号一样的提示符,在这个提示符处继续输入命令,输入完后敲击回车键就可以了:

> kat=c(−1,1,
+ .5)
> kat
[1] −1.0 1.0 0.5

可用下面的冒号“:”来建立一个特殊的向量:

> j=0:10 
> j
 [1] 0 1 2 3 4 5 6 7 8 9 10

这里的j是向量,其元素是0~10的整数。也可用同样的方式来定义包含负数的向量:

> k=5:−5 
> k
 [1] 5 4 3 2 1 0 −1 −2 −3 −4 −5

想知道2的0次方到20次方分别是多少吗?这样做:

> j=0:20
> 2^j
[1]  1    2    4     8    16    32   64    128 
[9]  256   512   1024   2048   4096  8192  16384  32768 
[17] 65536  131072 262144  524288  1048576

此时读者可能已经注意到:用R的语法可以非常清晰地描述数学问题,这样就可毫无障碍地用即时消息或是短信来跟其他人讨论数学问题。

R:嗨,忙什么呢?
S:做数学作业呢,唉。
R:是啊,好愁人啊,我忘了求二次方程的方法了。
S:是这样的。
S:ax^2+bx+c=0。
S:当 b^2-4ac>0 时,存在两个解。
S:(-b+sqrt(b^2-4ac))/(2*a);
S:(-b-sqrt(b^2-4ac))/(2*a)。
R:谢谢啦!你在用R做作业吗?
S:当然啦!若用计算器需多花一倍的时间啊。
R:那等你做完了,一起去咖啡店吧。
S:好的!马上就做完了,用R就是方便。

S和R这两个人都是有经验的R使用者,他们知道sqrt()是用来求解括号中的平方根。在第3章中,还会介绍该函数和其他一些函数的使用方法。


https://www.xamrdz.com/mobile/49p1959902.html

相关文章: