本文原创,转载请注明出处,本人Q1273314690
vector(mode = "logical", length = 0)
as.vector(x, mode = "any") #下面没写明默认值,所以Usage这里写的就算默认值
is.vector(x, mode = "any")
这三个函数都是同族的
vector produces a vector of the given length and mode.
vector()产生一个指定模式和长度的向量
as.vector, a generic(泛型), attempts to coerce its argument into a vector of mode mode (the default is to coerce to whichever vector mode is most convenient): if the result is atomic all attributes are removed(结果是原生类型,则所有的属性将被移除).
as.vector()转化为一个指定模式的向量
is.vector returns TRUE if x is a vector of the specified mode having no attributes other than names. It returns FALSE otherwise.
如果x是一种只含有names属性的特定模式类型的向量,则返回T(所以判断的时候要加上类型啊~(mode = "any"))
判断是否为指定模式的向量(默认的模式是“any”)
Arguments
mode
character string naming an atomic mode(应指数值,字符,逻辑等类型 下面detail有解释) or "list" or "expression" or (except for vector) "any".
length
a non-negative integer specifying the desired length. For a long vector, i.e., length > .Machine$integer.max, it has to be of type "double". Supplying an argument of length other than one is an error.
x
an R object.
Details
The atomic modes are "logical", "integer", "numeric" (synonym(同义词) "double"), "complex", "character" and "raw".
If mode = "any", is.vector may return TRUE for the atomic modes, list and expression. For any mode, it will return FALSE if x has any attributes except names. (This is incompatible with S.) On the other hand, as.vector removes all attributes including names for results of atomic mode (but not those of mode "list" nor "expression").
如果mode是any,则is.vector将会对原生模式,列表,表达式都返回T,只要含有除了names属性外的其他属性就返回F。
as.vector()将去除原生类型中的所有属性(包括names),但list和expression不会
Note that factors are not vectors; is.vector returns FALSE and as.vector converts a factor to a character vector for mode = "any".
因子并不是向量,as.vector将其转化为字符向量
Value
For vector, a vector of the given length and mode. Logical vector elements are initialized to FALSE, numeric vector elements to 0, character vector elements to "", raw vector elements to nul bytes and list/expression elements to NULL.
对于给定长度和模式的向量。
逻辑向量用F初始化其元素,数值向量用0初始化其元素。
字符向量用""初始化其元素,list/expression用NULL初始化其元素
For is.vector, TRUE or FALSE. is.vector(x, mode = "numeric") can be true for vectors of types "integer" or "double" whereas is.vector(x, mode = "double") can only be true for those of type "double".
使用is.vector的时候,最好指定mode(默认是nay),以便于更准确的判断
Methods for as.vector()
Writers of methods for as.vector need to take care to follow the conventions of the default method. In particular
Argument mode can be "any", any of the atomic modes, "list", "expression", "symbol", "pairlist" or one of the aliases(别名) "double" and "name".
The return value should be of the appropriate mode. For mode = "any" this means an atomic vector or list.
Attributes should be treated appropriately: in particular when the result is an atomic vector there should be no attributes, not even names.
is.vector(as.vector(x, m), m) should be true for any mode m, including the default "any".
Note
as.vector and is.vector are quite distinct from the meaning of the formal class "vector" in the methods package, and hence as(x, "vector") and is(x, "vector").
Note that as.vector(x) is not necessarily a null operation if is.vector(x) is true: any names will be removed from an atomic vector.
如果is.vector(x)的结果是T,as.vector(x)不一定是一个空操作(因为我虽然还是向量,但可以祛除names属性呀,所以我还是操作的),这里的x是同一个x
例子1
df <- data.frame(x =1:3, y =5:7)
try(as.vector(data.frame(x =1:3, y =5:7), mode ="numeric"))
Error in as.vector(data.frame(x =1:3, y =5:7), mode ="numeric"):
(list) object cannot be coerced to type 'double'
因为数据框是列表的一种,列表不能转化为mode="numeric"?
试验
> as.vector(data.frame(x =1:3, y =5:7), mode ="list")
x y
115
226
337
>class(as.vector(data.frame(x =1:3, y =5:7), mode ="list"))
[1]"data.frame"
> mode(as.vector(data.frame(x =1:3, y =5:7), mode ="list"))
[1]"list"
我自己再试了下
> test<-list(c(1,2),c(2,3))
> as.vector(test,mode="numeric")
Error in as.vector(test, mode ="numeric"):
(list) object cannot be coerced to type 'double'
得出结论,as.vector真是鸡肋
//2016年3月18日22:32:15
然而,你并不能这么说它鸡肋,他是可以成功将矩阵转为向量的,只是不能对数据框罢了,因为数据本就是存不同类型的数据的,你并不能强求人家转,而且这也没什么意义。
于是引出下一个问题:
例子2
> x <- c(a =1, b =2)
> is.vector(x)
[1] TRUE
> as.vector(x)
[1]12
> all.equal(x, as.vector(x))## FALSE
[1]"names for target but not for current"
> attributes(x)
$names
[1]"a""b"
> attributes(as.vector(x))
NULL
主要为了说明as.vector()会祛除names属性
例子3
> is.list(df)
[1] TRUE
>! is.vector(df)
[1] TRUE
> is.vector(df, mode ="list")
[1] FALSE
>! is.vector(df, mode ="list")
[1] TRUE
> is.vector(list(), mode ="list")
[1] TRUE
- exec族函数详解及循环创建子进程
前言:之前也知道exec族函数,但没有完全掌握,昨天又重新学习了一遍,基本完全掌握了,还有一些父子进程和循环创建子进程的问题,还要介绍一下环境变量,今天分享一下. 一.环境变量 先介绍下环境的概念和特 ...
- Linux学习笔记(8)-exec族函数
昨天学习了Linux下的进程创建,创建一个进程的方法极为简单,只需要调用fork函数就可以创建出一个进程,但是-- 介绍fork()函数的时候提到,在创建进程后,子进程与父进程有相同的代码空间,执行的 ...
- R-- Apply族函数
APPLY族函数: apply(x,a,f) 对矩阵或数据框的某一维度作用函数fx为矩阵或数据框:a为1代表行,a为2代表列:f为作用函数. lapply(x,f) 对x的每一个元组作用函数f,结果以 ...
- vector作为函数返回类型
在实际的操作中,我们经常会碰到需要返回一序列字符串或者一列数字的时候,以前会用到数组来保存这列的字符串或者数字,现在我们可以用vector来保存这些数据.但是当数据量很大的时候使用vector效率就比 ...
- 【Linux 进程】exec族函数详解
exec族的组成: 在Linux中,并不存在一个exec()的函数形式,exec指的是一组函数,一共有6个,分别是: #include <unistd.h> extern char **e ...
- R中的apply族函数和多线程计算
一.apply族函数 1.apply 应用于矩阵和数组 # apply # 1代表行,2代表列 # create a matrix of 10 rows x 2 columns m <- ma ...
- 从0开始自己用C语言写个shell__01_整体的框架以及fork和exec族函数的理解
最近才忙完了一个操作系统的作业,让我们用C语言实现一个Shell.总的来说,其实就是让我们 对系统调用有比较深的了解. 首先 介绍一下我的Shell 所实现的功能.1.运行可执行程序 即输入某个 标志 ...
- Linux-exec族函数
1.为什么需要exec族函数 (1).fork子进程是为了执行新程序(fork创建子进程后,子进程和父进程同时被OS调度执行,因此子程序可以单独的执行一个程序,这样程序宏观上将会和父进程程序同时进行) ...
- STL之vector常用函数笔记
STL之vector常用函数笔记 学会一些常用的vector就足够去刷acm的题了 ps:for(auto x:b) cout<<x<<" ";是基于范围的 ...
随机推荐
- 天气查询SDK
简介: 这是一个用于查询天气的SDK,在很多时候,尤其是对接多而小功能公众账号的时候,天气查询比较使用,此SDK就是这样的用途,使用的是中国天气网的API,已经集成了网上最靠谱的方式来实现,包括里面的 ...
- iptables实现正向代理
拓扑图 实现目标 内网用户通过Firewall服务器(iptables实现)访问外网http服务 配置 #iptables iptables -t nat -A POSTROUTING -i eth0 ...
- A.Kaw矩阵代数初步学习笔记 10. Eigenvalues and Eigenvectors
“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...
- TypeScript Basic Types(基本类型)
在学习TypeScript之前,我们需要先知道怎么才能让TypeScript写的东西正确的运行起来.有两种方式:使用Visual studio 和使用 NodeJs. 这里我选择的是NodeJs来编译 ...
- [JavaEE]Get请求URI中带的中文参数在服务端乱码问题的解决方法
在Get请求中,如果请求参数中带有中文,如 http://localhost:8080/DinnerParty/shop/search?query=多伦多, 在服务端拿到的是乱码. 这是因为客户端提交 ...
- 如何用iframe标签以及Javascript制作时钟?
如何利用iframe标签以及Javascript制作时钟? 如何制作一个时钟呢?效果如下图所示: 这里的时钟会不停的走,但是下面的页面是不会变得,这样就实现了我们想要的效果了.下面我将分为以下几个方面 ...
- python 培训之Django
1.Install sudo apt-get install python-pip sudo pip install django==1.8 2. Create Project django- ...
- k-nearest-neighbor算法
1. kNN 1.1 基本的kNN模型 kNN(k-nearest neighbor)的思想简单来说就是,要评价一个未知的东西U,只需找k个与U相似的已知的东西,并通过k个已知的,对U进行评价.假如要 ...
- RandomAccessFile类
File类只是针对文件本身进行操作,而如果要对文件内容进行操作,则可以使用RandomAccessFile类,此类属于随机读取类,可以随机地读取一个文件中指定位置的数据. //============ ...
- 【C++11】新特性——auto的使用
[C++11]新特性——auto的使用 C++11中引入的auto主要有两种用途:自动类型推断和返回值占位.auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除.前后 ...