第10章 R语言编程

本文介绍了R语言编程的基础知识,包括流程控制(for、while循环和条件语句)、自编函数的创建,以及数据操作,如向量、矩阵的加减乘除和取整函数的应用。此外,还探讨了apply函数族在简化循环中的作用。
摘要由CSDN通过智能技术生成

目录

1、流程控制

2、自编函数

3、数据操作

4、apply函数族


1、流程控制

  • for 循环:

for(i in a:b){要循环的语句}

for(i in 1:10){print(2*i)}

## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
## [1] 12
## [1] 14
## [1] 16
## [1] 18
## [1] 20

  • while循环:

​​​​​​​while(判断语句){要循环的语句}

a<-0
i<-0
while(i<=5){
  a=i+5*a
  print(a)
  i<-i+1
}

## [1] 0
## [1] 1
## [1] 7
## [1] 38
## [1] 194
## [1] 975

a

## [1] 975

  • 条件语句:

3种:

if(条件语句){执行语句}

if(条件语句){执行语句} else{执行语句}

if(条件语句){执行语句} else if(条件语句){执行语句}

2、自编函数

(函数名称)<-function(x1,x2,……){函数主体}

3、数据操作

R中最基本结构为向量,所以可以在其中进行向量的加/减/乘/除/幂运算,当2向量长度不同就会出现循环运算。

  • 基本运算

a<-c(1,2,3,4)
b<-c(2,4,6,7)
a+b

## [1]  3  6  9 11

a*b

## [1]  2  8 18 28

a^b

## [1]     1    16   729 16384

同样2个矩阵/数据框等也可进行加/减/乘/除/幂运算.

m1<-matrix(1:6,3)
m2<-matrix(11:16,3)
m1-m2

##      [,1] [,2]
## [1,]  -10  -10
## [2,]  -10  -10
## [3,]  -10  -10

m1+m2

##      [,1] [,2]
## [1,]   12   18
## [2,]   14   20
## [3,]   16   22

m1*m2

##      [,1] [,2]
## [1,]   11   56
## [2,]   24   75
## [3,]   39   96

m1/m2

##            [,1]      [,2]
## [1,] 0.09090909 0.2857143
## [2,] 0.16666667 0.3333333
## [3,] 0.23076923 0.3750000

m1^m2

##         [,1]         [,2]
## [1,]       1 2.684355e+08
## [2,]    4096 3.051758e+10
## [3,] 1594323 2.821110e+12

  • 取整函数:

round( )四舍五入;

ceiling( ),向上取整,大于该数的最小整数;

floor( )向下取整,小于该数的最大整数;

trunc( )直接舍去小数部分。

round(4.7)

## [1] 5

trunc(4.7)

## [1] 4

ceiling(4.7)

## [1] 5

floor(4.7)

## [1] 4

  • 数学计算函数:

log( ):可以通过base参数指定对数的底,默认为自然底数。log2( ),log10( )固定以2,10为底数

log(100,base = 10)

## [1] 2

log(144,base=12)

## [1] 2

cumsun( ),cumprod( )累积求和,累积求积

  • 统计函数:

median( )中位数

quantile( )分位数

scale( )标准化数据,根据公式\frac {x-\bar{x}}{\sigma }进行数据标准化,其中标准差可以任意指定

a<-1:100
quantile(a,prob=c(0.25,0.5,0.75))

##   25%   50%   75%
## 25.75 50.50 75.25

scale(1:4)#1:4标准差为1.290994,均值为2.5。在这里是取标准差为1.29缩放数据

##            [,1]
## [1,] -1.1618950
## [2,] -0.3872983
## [3,]  0.3872983
## [4,]  1.1618950
## attr(,"scaled:center")
## [1] 2.5
## attr(,"scaled:scale")
## [1] 1.290994

scale(1:4,scale=2)#在这里是取标准差为2缩放数据

##       [,1]
## [1,] -0.75
## [2,] -0.25
## [3,]  0.25
## [4,]  0.75
## attr(,"scaled:center")
## [1] 2.5
## attr(,"scaled:scale")
## [1] 2

  • 文本函数:

nchar( )返回向量中每个字符串的长度 。

substr(x,star,stop)提取字符向量x中的各个元素的一部分,从每一个元素的第几个字符开始,以每一个元素中的第几个字符结束。 strsplit(x,split= )把字符向量x按照split指定的字符分割。

a<-c("vhg","hjggj","kjhhkhjkhghf")
nchar(a)

## [1]  3  5 12

substr(a,2,4)

## [1] "hg"  "jgg" "jhh"

strsplit(a,split = 'g')

## [[1]]
## [1] "vh"
##
## [[2]]
## [1] "hj" ""   "j"
##
## [[3]]
## [1] "kjhhkhjkh" "hf"

cat( )函数可以把字符串拼接在一起,可以通过“”进行换行或通过fill设置每行长度,sep= 设置分隔符

cat('jhjj','jhjj','sdfdsfdfd',sep="")

## jhjjjhjjsdfdsfdfd

cat('jhjj','jhjj \n ','sdfdsfdfd',sep="")

## jhjjjhjj
##  sdfdsfdfd

paste( )对向量的每个数据进行拼接,再返回一个向量.还可以每一个元素后面加同一个字符,这对于变量的命名是很方便的。

paste(c("a","d"),c("r","g","d"))

## [1] "a r" "d g" "a d"

paste(c("a","b","c","d"),".csv",sep=",")

## [1] "a,.csv" "b,.csv" "c,.csv" "d,.csv"

toupper( )把字母全变成大写

tolower( )把字母全变成小写

toupper(c("jhjhjh","jshkjh"))

## [1] "JHJHJH" "JSHKJH"

tolower(c("JHJHJjgjh","jhjkhRTDRESR"))

## [1] "jhjhjjgjh"    "jhjkhrtdresr"

4、apply函数族

作用:类似于循环,但比循环简单

apply(x,MARGIN,FUN) MARGIN=1,函数应用于X的每一行;=2每一列 FUN指明应用的函数

a<-c(1,2,3)
b<-c(3,4,2)
d<-c(4,5,6)
(x<-data.frame(a,b,d))

##   a b d
## 1 1 3 4
## 2 2 4 5
## 3 3 2 6

(e<-matrix(1:6,3))

##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5
## [3,]    3    6

apply(x,MARGIN = 1,FUN = sum)

## [1]  8 11 11

apply(e, 2, sum)

## [1]  6 15

tapply(X,INDEX,FUN)对向量进行汇总。按照INDEX指定的变量进行分类汇总,并计算FUN指定的函数值

library(Ecdat) #加载数据集

data(Earnings)
head(Earnings,15)

##    age      y
## 1   g3  569.5
## 2   g3  895.5
## 3   g3 1111.0
## 4   g3 1182.0
## 5   g3 1277.5
## 6   g3 1384.0
## 7   g3 1464.5
## 8   g3 2453.0
## 9   g3 2538.0
## 10  g3 2539.5
## 11  g3 2830.5
## 12  g3 2852.0
## 13  g3 2865.0
## 14  g3 2945.0
## 15  g3 3023.0

tapply(Earnings$y, Earnings$age, mean)#按照年龄段分类汇总,并计算出每一类的均值

##       g1       g2       g3
## 22880.48 25080.17 27973.63

lapply( )对列表/向量中的每一个元素执行1个函数,返回值是列表。只有2个参数

list1<-list(c(1:5),c(1:4),c(1:3))
lapply(list1,sum)

## [[1]]
## [1] 15
##
## [[2]]
## [1] 10
##
## [[3]]
## [1] 6

sapply,mapply与lapply类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值