is.vector(A):判断A是否为向量;
as.vector(A):如A是矩阵(数组),as.vector就是将矩阵转化为向量。
R中的vector分为两类,atomic和list,二者的区别在于,前者元素类型必须相同,后者可以不同。前者的代表是向量和矩阵,后者的代表是list和数据框。
is.vector
由于它们都是vector,所以用is.vector检验无法区分向量和列表。当然,也无法用as.vector将列表转换成向量。
同样是vector,矩阵和数据框用is.vector检验就返回的是FALSE,这说明is.vector也不是检验vector的,它的真正原理在于,检查是否最多只有一个属性:name。即查看其属性,如果没有属性或者只有一个name属性,才返回TRUE。
扩展资料
R语言强大的功能:
1、R的标记语言可以制作可重复生成的Word和Powerpoint文档
R语言中的rmarkdown包可以制作可重复生成的Word文档和Powerpoint幻灯片,而这只需要改变一行YAML的代码。
2、组建和运行一个可交互的网络应用只需要几行代码
几行R代码就可以生成一个可交互的网络应用。比方说如果使用R语言的flexdashboard包, 只需要36行代码,就可以生成一个可交互的动态报表,来探索BMI指数与全国健康营养检查样本结果的关联。
3、几行甚至一行R代码就可以支持网络应用的运行
另外一个很酷的功能是,通过rsconnect包,R语言还可以仅用一两行代码就支持网络应用的运行。这些应用既可以通过自己的服务器来支持,也可以用shinyapps.io这种云服务器。
4、通过使用R语言的dplyr/dbplyr,几乎各种数据库都可以连接
使用dbplyr包,用R语言连接各种数据库,无论是本地的还是远程的,都非常方便。这个功能使R语言用户可以不用担心底层的数据库,而独立地从主流数据库中抽取数据。R语言的bigrquery包还可以直接利用BigQuery和其他大规模数据存储。
先对两个vector中的元素都按从大到小的顺序排序然后定义两个iterator,分别指向两个vector的头部
vector<int>first
vector<int>second
vector<int>::iterator poiFir
vector<int>::iterator poiSec
poiFir=first.begin()
poiSec=second.begin()
然后循环直到poiFir指向first的尾部或poiSec指向second的尾部
每次循环的内部:
判断*poiFir和*poiSec的大小
(1)若相等,则为相同的元素,记录此值(可以另建一个vector<int>save用于存放相等的值,save.push_back(*poiFir)),再将poiFir++;poiSec++;
(2)若*poiFir大于*poiSec的值,则将poiSec++;
(3)若*poiFir小于*poiSec的值,则将poiFir++;
循环结束后,save中存储的值即为两个vector中相等的值
时间效率为两个vector中元素个数的和