R简单算术操作符<函数和+-*/>,缺失值,正则向量,向量运算<索引>(二)

赋值操作

x <- c(1,2,3);

x = c(1,2,3);

c(1,2,3) -> x;

assign("x", c(1,2,3));

这四种形式在大部分时候都能达到一致的效果。推荐使用第一种

1:向量的定义

一串有序数值构成的数值向量(vector) ,创建一个向量我们使用c(num1,num2,num3);

在 R 环境里面,单个的数值也是被看作长度为1的向量。

1.1 向量的基本运算

在算术表达式中使用向量将会对该向量的每一个元素都进行同样算术运算。出现 在同一个表达式中的向量最好是长度一致。如果他们的长度不一样,该表达式的值将 是一个和其中最长向量等长的向量。表达式中短的向量会被循环使用(recycled)(可 能是部分的元素)以达到最长向量的长度。对于一个常数就是简单的重复。

example:   x <- c(1,2,3);

y <- c(1,2,3,4,5,6);

v <- x + y +1;

v是由x重复两次的向量,y重复一次的向量,以及1重复6次的向量相加而成

内部的向量为:(1,2,3,1,2,3)+(1,2,3,4,5,6)+(1,1,1,1,1,1)

v的结果为:(3,5,7,6,8,10)

1.2 向量中常用的函数

max 和min 分别给出一个向量的最大值和最小值。 函数range得到的是一个长度为2的向量,即c(min(x), max(x))。 length(x) 给出向量x 的元素个数, sum(x) 给出x 中元素的累加和, 而prod(x) 则得到它们的乘积 ,

注意:max 和min 将会给出它们参数向量中的最大和最小值。在同时给予多个参数 向量的情况下,这两个函数会把参数向量合并成一个向量处理 。

example:利用上例的变量x , y .则max(x,y)等价于max(c(x,y));返回一个最大值参数 6.

两个统计函数就是计算均值的mean(x) (等价于sum(x)/length(x)) 和计算样本方差的var(x) =sum((x-mean(x))^2)/(length(x)-1)

当x是一个n*p的矩阵时,var计算的结果则为p维的协方差矩阵,相关定义见http://www.cnblogs.com/chaosimple/p/3182157.html

协方差计算的是两列之间的相关性。   

R 环境内部的计算是以双精度的实数或者双精度的复数(在输入数据是复数的 情况下)实现的。 如果要处理复数,应该给出明确的复数部分.例如sqrt(-10+0i);

1.3 生成正则数列

R中冒号:的优先级最高

example :   n <- 5   5

n <- 1:5-1   0,1,2,3,4

         n <- 1:(5-1)    1,2,3,4

seq函数也能达到同样的效果,其中还有步长等相关设置

example: seq(from=1, to=10, by=2)         result=1  3  5 7  9

seq(from=10, to=1, by=-2)        result=10  8  6  4  2

seq(from=1, length=5, by=2)         result=1  3  5 7  9

重复对象我们使用rep函数

example:  res_rep <- rep(x,times=2)        result = 1 2 3 1 2 3

res_rep <- rep(x,each=2)         result =1 1 2 2 3 3

1.4 逻辑运算符

c1 <- x<2   c1 = TURE FALSE FALSE

c2 <- x>0   c2 = TURE TURE TURE

c1&c2 交集:TURE FALSE FALSE

c1|c2 并集:TURE TURE TURE

1.5 缺失值

在某些情况下,向量的元素可能有残缺。当一个元素或者值在统计的时候“不可得到”(not available)或者“值丢失” (missing value),

相关位置可能会被保留并且赋予一个特定的值NA ,任何含有NA 数据的运算结果都将是NA 。为了判断一个向量中是否有NA,我们使用is.na(x).

      example x<-(c(1:3), NA)    is.na(x) 的结果则为 FALSE FALSE FALSE TURE

我们不能用逻辑 == 来判断,因为NA本来就代表的是不确定,所以我们也不知道这个不确定的指是不是等于我们要判断的指。

数值计算会产生第二种“缺损”值,也称为非数值(Not a Number)NaN 。

example x<- 0/0;  x的值为NaN

1.6 字符向量

 labs <- paste(c("X","Y"), 1:10, sep="")   las的结果为 "X1"  "Y2"  "X3"  "Y4"  "X5"  "Y6"  "X7"  "Y8"  "X9"  "Y10"

paste的工作方式是,如果有两个向量,则按照其在paste中的先后顺序两两进行拼接,若长度不一致,则短的向量会进行循环。

R中字符的处理方式类似与C语言中的处理方式。

1.7 索引向量(可以写在赋值操作的两端)

如果一个表达式的结果是向量,则我们可以直接在表达式的末尾方括号中加入索引向量以得到结果向量的子向量 。

一: 以逻辑向量为索引向量

逻辑向量为TURE的值将会被取出并存入新的向量。

examplex:  取出indexF中的非NA数值。

          indexF <- rep(c(1:3,NA), times=3);

indexT <- indexF[!is.na(indexF)]

二: 正整数索引

      这种索引是将指定元素被包括。

x <- c(1:10);

        x[4]                 result=  4

       x[1:5]              result= 1 2 3 4 5

          x[rep(c(1:2), times=4)]     result=   1 2 1 2 1 2 1 2

三:负整数索引

      这种索引是将指定元素被排除。

x <- 1:10

y <- x[-(1:5)]   result= 6 7 8 9 10

正数和负数索引不能混合放置使用。

四:采用名称进行索引

color <- c(1,2,3)

names(color) <-c("red","green","blue");

choice <- color["red"]   choice等于1

五:写在赋值操作的左端

写在赋值操作的左端时,右端的内容只会对左端索引的内存发生作用。

x[is.na(x)] <- 0; 将x中的na全部替换为0值。

时间: 2024-10-08 15:11:56

R简单算术操作符<函数和+-*/>,缺失值,正则向量,向量运算<索引>(二)的相关文章

R语言常用函数

数据结构 一.数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量 character:字符型向量list:列表 data.frame:数据框 c:连接为向量或列表length:求长度subset:求子集 seq,from:to,sequence:等差序列 rep:重复 NA:缺失值 NULL:空对象 sort,order,unique,rev:排序 unlist:展平列表 attr,attributes:对象属性 mode,typeof:对象存储模式与类型 nam

R语言中函数调试

有时候会用R语言写一下简单的脚本处理函数,加入需要调试的话可以按照下面的步骤进行: fun <- function(x , y){ x + y x - y x * y x / y } debug(fun) 先创建一个简单的函数,然后用debug() 函数对创建的fun()函数进行debug.这时控制台没有任何变化,但是当再次运行创建函数时会进入debug状态: fun(2 + 3) debugging in: fun(2 + 3) debug at #1: { x + y x - y x * y

python之简单的函数介绍(http://docs.python.org/3/library)

Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用. 在上面的网站上我们可以进行查询,Python具体都有哪些函数. 我们也可以再交互命令行中来查找函数: >>> help (abs) Help on built-in function abs in module builtins: abs(x, /) Return the absolute value of the argument. help(函数名)是一个能够在交互命令行中查找函数功能的语句. 这个a

简单的函数介绍(http://docs.python.org/3/library)

Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用. 在上面的网站上我们可以进行查询,Python具体都有哪些函数. 我们也可以再交互命令行中来查找函数: >>> help (abs) Help on built-in function abs in module builtins: abs(x, /) Return the absolute value of the argument. help(函数名)是一个能够在交互命令行中查找函数功能的语句. 这个a

R语言table()函数

R语言table()函数比较有用,两个示例尤其是混淆矩阵这个案例比较有用: 例子一:统计频次 z<-c(1,2,2,4,2,7,1,1);z1<-table(z);summary(z1); z1#实现z中各数据频次的统计z1 2 4 7 3 3 1 1 names(z1)#居然是有名字的[1] "1" "2" "4" "7"例子二:实现混淆矩阵 t=table(c(1,0,1,1,1,0,0,1),c(0,0,1,

R语言封装函数

R语言封装函数 原帖见豆瓣:https://www.douban.com/note/279077707/ 一个完整的R函数,需要包括函数名称,函数声明,函数参数以及函数体几部分. 1. 函数名称,即要编写的函数名称,这一名称就作为将来调用R函数的依据.2. 函数声明,函数名称 <- function, 即声明该对象的类型为函数.3. 函数参数,这里是输入的数据,函数参数是一个虚拟出来的一个对象.函数参数所等于的数据,就是在函数体内部将要处理的值,或者对应的数据类型. 函数体内部的程序语句进行数据

R简单数据分析

眼下大数据口号满天飞,今天拿我微信圈朋友一段时间内分享内容作为数据,用R包的算法实现简单分析. 由于微信没有接口获取数据,暂时只能手动记录数据,主要是做个小尝试,数据获取方式是其次. 1)我们看看微信圈活跃的朋友. PS:知道为何我们的流量烧的这么快了吧?这些小伙伴八成是运营商潜伏过来的余则成,在背后分成还要我们帮忙数钱,后续我会揪出那个人,敬请期待. 2)我们看看微信圈朋友的喜好. PS:喜欢分享链接的小伙伴一般喜欢晒图片,有木有?亲. 3)用图表讲述故事,有图有真相. 微信圈内容占比 PS:

【C++】编写一个简单的函数实现重载。

//编写一个简单的函数实现重载. #include <iostream> using namespace std; int max(int a,int b) { return a>b?a:b; } int max(int a,int b,int c) { int x=max(a,b); return max(x,c); } double max(double a,double b) { return a>b?a:b; } int main() { cout<<"

R语言——绘图函数深入学习

利用R自带数据集 通过data()函数可以查看R自带数据集. > data() 返回以下结果,每一条记录都是一个数据,键入相应的数据名称可以查看具体信息. Data sets in package ¡®datasets¡¯: AirPassengers Monthly Airline Passenger Numbers 1949-1960 BJsales Sales Data with Leading Indicator BJsales.lead (BJsales) Sales Data wit