R语言中的基本函数使用 - 更新中

Python05

R语言中的基本函数使用 - 更新中,第1张

用法:assign(x, value, pos = -1, envir = as.environment(pos),  inherits = FALSE, immediate = TRUE)

assign函数在循环时候,给变量赋值。

举例说明:

1、

for (i in 1:(length(rowSeq)-1)){

  assign(paste("nginx_server_fields7_", i, sep = ""), nginx_server_fields7[(rowSeq[(i-1)+1]):(rowSeq[i+1]), ])

}

2、

for (i in 1:3){

    assign(paste("a", i, sep = ""), i:10)

}

ls()

[1] "a1" "a2" "a3" "i"

>a1

[1]  1  2  3  4  5  6  7  8  9 10

>a2

[1]  2  3  4  5  6  7  8  9 10

>a3

[1] 3  4  5  6  7  8  9 10

1、paste函数可用于字符串连接

用法:paste (..., sep = " ", collapse = NULL),分隔符默认为空格

我们简单举个例子

1)paste("a","b") ##能连接a b

[1] "a b"

paste("a","b","c")

[1] "a b c"

2)设置分隔符paste("a","b",sep="=") ##注意到用等号分隔了

[1] "a=b"

3)连接多个元素paste("a",1:5,sep="") ##会自动每个元素与a相连

[1] "a1""a2""a3""a4""a5"

4)paste("a",1:5,".pdf",sep="") ##比如想批量输出文件名

[1] "a1.pdf""a2.pdf""a3.pdf""a4.pdf""a5.pdf"、

2、collapse参数

谢益辉大佬说这个参数引无数英雄竞折腰啊,大家只会sep

1)paste("a",1,collapse="+") ##注意到了吧,collapse没用上

[1] "a 1"

2)paste(c("a","b","c"),collapse="+") ##这样就很容易理解了,collapse折叠起了元素

[1] "a+b+c"

3)paste("a",1:5,sep="") ##再来更明显的举例

[1] "a1""a2""a3""a4""a5"

4)paste("a",1:5,sep="",collapse="+") ##先在元素间连接,然后折叠

[1] "a1+a2+a3+a4+a5"

3、与paste0函数的区别

paste0函数,默认sep=""是两个函数唯一的区别

paste(c("a","b","c"),1:3)##默认空格符

[1] "a 1""b 2""c 3"

paste(c("a","b","c"),1:3,sep=" ")

[1] "a 1""b 2""c 3"

paste(c("a","b","c"),1:3,sep="")

[1] "a1""b2""c3"

如果两个向量长度不同paste(c("a","b","c"),1:5) ##超出范围后继续从前向后连接

[1] "a 1"  "b 2"  "c 3"  "a 4"  "b 5"

paste0(c("a","b","c"),1:3)#默认元素连接为sep=""

[1] "a1""b2""c3"

用法:unlist()函数的作用,就是将list结构的数据du,变zhi成非list的数据,即将list数据变成 字符串向量 或者数字向量的形式

如果是向量的话就直接输出向量

例子:

%in%相当于match()函数的一个缩写。用来判断一个数组或矩阵是否包含在另一个数组或矩阵里。举个例子一目了然:

#首先复制两个变量a和b

>a <- 1:5

>b <- 3:7

>a %in% b    #看a的元素是否包含在b中输出结果如下:

[1] FALSE FALSE  TRUE  TRUE  TRUE

用法:apply(x, MARGIN, FUN, ...)

作用:对 矩阵 的行或列使用函数,或者对 数组 的各个维度使用函数

x为数据对象,MARGIN是维度的下标,MARGIN=1表示行,MARGIN=2表示列,FUN是自己指定的任意或自定义函数

注:数据框dataframe也可以使用apply函数,该函数会自动将数据框转化为矩阵,但前提是数据框中各列的数据类型 必须是数值型,否则会报错。

用法:lapply(x,FUN,...)

作用:对列表中的各个元素使用函数

x是格式为列表的数据源,FUN是任意函数。

intersect(data1,data2):交集

union(data1,data2):并集

R语言常用数学函数

sum()、max()、min()、mean()、median()

prod(x) 对x中的元素都连乘

which.max(x) 返回x中最大元素的下标

which.min(x) 返回x中最小元素的下标

range(x) 值域

rev(x) 对x中的元素取逆序

sort(x) 将x中的元素将升序排列

pmin(x,y) 返回一个向量,它的第i个元素是x[i],y[i] 中最小值

pmax(x,y) 返回一个向量,它的第i个元素是x[i],y[i] 中最大值

cumsum(x) 求累积和,返回一个向量,第i个元素等于x[1]到x[i]的和

cumprod(x) 求累积(从左到右)乘积

cummin(x) 求累积最小值(从左到右)

cummax(x) 求累积最大值(从左到右)

match(x,y) 返回一个和x的长度相同的向量,第i个元素表示y中与x[i]相同的元素的位置(没有则返回NA)

na.omit(x) 函数忽略有缺失值(NA)的观察数据(如果x是矩阵或数据框则忽略相应的行)

na.fail(x) 如果x包含至少一个NA则返回一个错误消息

which() 返回符合条件的元素的下标

choose 组合数,二项式,例choose(4,2) 返回6

rep(x,y) 将x重复y次

unique(x) 去掉重复的元素,只取一个

table(x) 返回一个列表,给出y中重复元素的个数列表

subset(x,条件) 返回x中满足特定条件的子集

用的最多的,是求均值的mean()函数,当然这里也要提到,像sum()这种求和函数,

还有sd(x) 标准差函数,var(x) 方差函数。min()求最小值,max()求最大值。

我们来具体试试,这里使用一个向量:

test<-c(2,4,5,23,199,25,78,90,12)

求最大值

>max(test)

[1] 19

求最小值

>min(test)

求和

>sum(test)

[1] 43

求标准差,求方差

>sd(test)

[1] 65.01154

>var(test)

[1] 4226.

在来试试最重要的均值

>mean(test)

[1] 48.66667

另外中位数计算。使用median()函数

>median(test)

[1] 23

如果给定一种概率分布,通常会有四类计算问题:

计算其概率密度density (d)计算其概率分布probability(p)计算其百分位数quantile (q)随机数模拟random (r)上面四类计算对应的英文首字母,就是R语言类率分布函数的开头字母。

比如说,正态分布是norm的化,那密度函数就是dnorm(),分布函数就是pnorm(),

更有用的是用相应分布生成随机数,比如rnorm(),就会生成服从正态分布的随机数。

比如我们生成100个服从正态分布的随机数

rnorm(100)

[1] -9.064408e-01 1.026560e+00 -1.097470e+00 1.055395e+00 9.377175e-01

[6] -2.080103e-01 -3.092396e-01 -8.739942e-01 -1.242774e+00 1.102486e+00

[11] 1.082092e+00 -1.695528e+00 -5.930809e-01 -2.100800e-01 8.253859e-01

[16] -1.112551e+00 -3.960474e-01 -9.354820e-01 7.291608e-01 -3.773510e-01

[21] -3.438082e-01 -7.378688e-02 -9.047609e-01 -1.036344e+00 9.485103e-01

[26] -3.437985e-01 -2.145275e-02 1.350098e+00 -1.283633e+00 3.767240e-01

[31] 1.169566e+00 -4.325399e-01 -9.215626e-02 3.839357e-01 3.045491e-01

......

我们再用相应的频率分布直方图来看一下,这些生成的随机数:

hist(rnorm(100))

R就画出了这些随机数的频率分布图