r语言html函数,【R语言】《R语言初学者指南》:函数、自定义函数、循环

《R语言初学者指南》—简单函数、自定义函数、循环

一、简单函数

table(A):数据透视,A为向量,同类计数

table(A,B):数据透视,A,二维计数

apply(data,1/2,function):data为矩阵或数据框,1为按行拆分计算,2为按列拆分计算。输出结果跟函数有关,如函数每次返回一个值,则最终apply返回向量;如函数每次返回一个向量,则最终apply返回矩阵。

tapply(X=A,Index=B,Fun=C):

数据透视,以B为纲对A进行各种计算。A、B为向量,C为计算方法如length、mean、sum。

sapply(X,function):apply(,2,),X必须为数据框

lapply(X,function):应用于list

summary():对象可以是向量、矩阵、数据框,返回每列最小值、第一四分位数、中位数、平均值、第三四分位数、最大值。

colsums(,na.rm=T),rowsums()

Veg

tapply(Veg$R,Veg$Transect,mean)

## 1 2 3 4 5 6 7

## 7.571429 6.142857 10.375000 9.250000 12.375000 11.500000 10.500000

## 8

## 11.833333

二、循环

先写一个元素的实现代码,再替换通用部分

案例:针对每个鸟巢(27个鸟巢)绘制一个通同胞协商对到达时间的jpeg格式的散点图。

1.载入数据

setwd("C:\\Rstudio\\RBook")

Owl

str(Owl)

## 'data.frame': 599 obs. of 7 variables:

## $ Nest : Factor w/ 27 levels "AutavauxTV","Bochet",..: 1 1 1 1 1 1 1 1 1 1 ...

## $ FoodTreatment : Factor w/ 2 levels "Deprived","Satiated": 1 2 1 1 1 1 1 2 1 2 ...

## $ SexParent : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 2 2 1 2 1 ...

## $ ArrivalTime : num 22.2 22.4 22.5 22.6 22.6 ...

## $ SiblingNegotiation: int 4 0 2 2 2 2 18 4 18 0 ...

## $ BroodSize : int 5 5 5 5 5 5 5 5 5 5 ...

## $ NegPerChick : num 0.8 0 0.4 0.4 0.4 0.4 3.6 0.8 3.6 0 ...

2.提取一个鸟巢数据实现

unique(Owl$Nest)

## [1] AutavauxTV Bochet Champmartin ChEsard

## [5] Chevroux CorcellesFavres Etrabloz Forel

## [9] Franex GDLV Gletterens Henniez

## [13] Jeuss LesPlanches Lucens Lully

## [17] Marnand Moutet Murist Oleyes

## [21] Payerne Rueyes Seiry SEvaz

## [25] StAubin Trey Yvonnand

## 27 Levels: AutavauxTV Bochet Champmartin ChEsard ... Yvonnand

OwlAut

jpeg("C:/Rstudio/RBook/Pic/AutavauxTV.jpg")

plot(x=OwlAut$ArrivalTime,y=OwlAut$NegPerChick,xlab="Arrival Time",ylab="Negotiation behavior",main="AutavauxTV")

dev.off()

## png

## 2

3.设计通用代码

AllNest

for(i in 1:length(AllNest)){

NestName

path

NestData

jpeg(path)

plot(x=NestData$ArrivalTime,y=NestData$NegPerChick,xlab="Arrival Time",ylab="Negotiation behavior",main=NestName)

dev.off()

print(i)

}

三、自定义函数

分为一个数据参数,多个数据参数(位置匹配),以函数为参数(分功能实现代码,再用if合并)等等。

案例1:函数输入数据框,计算每个变量含有缺失值的个数。

NaPerVarible

D1

colSums(D1)

}

案例2:函数确定每个变量中有多少个0

ZeroPerVarible

D1

colSums(D1,na.rm=T)

}

案例3:具有多个参数的函数

VaribleInfo

if(Choice1=="Zeros"){D1

if(Choice1=="Na"){D1

if(Choice1!="Zeros"& Choice1!="Na"){

print("Type 'Zeros' or 'Na'")

}else{colsums(D1, na.rm=T)}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值