admin 管理员组

文章数量: 887021


2024年1月10日发(作者:删除文件恢复 绿色)

R语言入门

R是开源的统计绘图软件,也是一种脚本语言,有大量的程序包可以利用。

R中的向量、列表、数组、函数等都是对象,可以方便的查询和引用,并进行条件筛选。

R具有精确控制的绘图功能,生成的图可以另存为多种格式。

R编写函数无需声明变量的类型,能利用循环、条件语句,控制程序的流程。

R网络资源:

R主页:

R资源列表 NCEAS /scicomp/software/r

R Graphical Manual /RGM2/

统计之都: /

QuikR /

丁国徽的R文档: /R/R-doc/

R语言中文论坛 /Rbbs/forums/

一、用函数es(),

[直接输入就可以联网,第一次的话之后选择镜像,然后选择包下载即可]

如果已经连接到互联网,在括号中输入要安装的程序包名称,选择镜像后,程序将自动下载并安装程序包。

例如:要安装picante包,在控制台中输入es("picante")已经安装了?

二. 安装本地zip包

路径:Packages>install packages from local files选择本地磁盘上存储zip包的文件夹。

(文件,运行R的脚本,选择所在文档)

三.调用程序包

在控制台中输入如下命令 library(“picnate”)

程序包内的函数的用法与R内置的基本函数用法一样。

四.程序包内部都有哪些函数?分别有什么功能?

查询程序包内容最常用的方法:

1 菜单帮助>Html帮助;

2 查看pdf帮助文档

五.查看函数的帮助文件

函数的默认值是什么?怎么使用?使用时需要注意什么问题?需要查询函数的帮助。

1 ?直接打开相关函数的说明和使用模板。

2 RGui>Help>Html help同样的效果,同上

3 apropos("")合理使用T检验,五种模式的T检验

4 help("")帮助同1-2

5 ("")有关T检验的一切东西都可以查出来。

6 查看R包pdf手册

六、帮助很强大

lm{stats} #函数名及所在包

Fitting Linear Models #标题

Description #函数描述

Usage #默认选项

Arguments #参数

Details #详情

Author(s) #作者

References #参考文献

Examples #举例

七、R图形界面:R commander

• 1安装R commander

es("Rcmdr")

• 2 R将自动下载并安装Rcmdr所需的所有程序包

调用R Commander

图12 R commander界面library(Rcmdr)

八、R的函数

R是一种解释性语言,输入后可直接给出结果。功能靠函数实现。函数形式:

函数(输入数据,参数= )

如果没有指定,则参数的以默认值为准。

例如:平均值 mean(x, trim = 0, = FALSE, ...)

线性模型 lm(y~x, data=test)

每一个函数执行特定的功能,后面紧跟括号,例如:

平均值 mean(); 求和 sum(); 绘图 plot() ;排序 sort()。

除了基本的运算之外,R的函数又分为”高级”和”低级”函数,高级函数可调用低级函数,这里的”高级”函数习惯上称为泛型函数。

如plot()就是泛型函数,可以根据数据的类型,调用底层的函数,应用相应的方法绘制相应的图形。这就是面向对象编程的思想。

查询的方法:Help>Html help>packages

log() tan()

log10() asin()

exp() acos()

sin() ()

cos() ()

glm(y~x1+x2+x3, binomial)

….

九、赋值与注释与对象起名

<- 右边的值赋值给左边的变量或者对象 ; # 注释注释部分不会编译

R处理的所有数据、变量、函数和结果都以对象的形式保存。

1.区分大小写,注意China和china的不同。

2.不能用数字作为变量,对象也不能用数字开头,但是数字可以放在中间或结尾,如2result与result2,后者是合法的。

3.建议不要用过短的名称。可以用”.”作为间隔,例如 1。

4.不要使用保留名:

NA, NaN, pi, LETTERS, letters, ,

十、元素与对象的类

1.对象是由各元素组成的。每个元素,都有自己的数据类型。

2.元素种类

数值型 Numeric 如 100, 0, -4.335

字符型 Character 如“China”

逻辑型 Logical 如TRUE, FALSE

3.对象的类class:

因子(factor) 因子是一个分类变量c("a","a","b","b","c")

向量(vector)一系列元素的组合。如 c(1,2,3); c("a","a","b","b","c")

矩阵(matrix)二维的数据表,是数组的一个特例:x <- 1:12 ; dim(x) <- c(3,4)

因子型 Factor 表示不同类别

复数型 Complex 如:2 + 3i

()

()

mean()

sd()

var()

[,1] [,2] [,3] [,4]

[1,] 1 4 7 10

[2,] 2 5 8 11

[3,] 3 6 9 12

数组(array) 数组是k维的数据表(k in 1:n,

n 为正整数)。

向量(n = 1) 矩阵(n = 2)

高维数组(n >= 3)

数据框(dataframe)是由一个或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的数据类型。

每个数据表可以看作一个数据框(dataframe)。每一行(row)作为一个记录(entry),每一列(column)作为一个向量(vector)。由很多不同类型的向量组成,如字符型,因子型,数值型。

如何生成数据框?两种办法:(1)从外部数据读取;(2)各类型因子组合成数据框。

列表(list)列表可以包含任何类型的对象。可以包含向量、矩阵、高维数组,也可以包含列表。

十一、运算符

数学运算运算后给出数值结果: +, -, *, /, ^ (幂)

比较运算运算后给出判别结果: (TRUE FALSE):

>, <, <=, >=, ==(==是计算机编程的二元运算符。当左边的内容与右边的内容相同时,返回1。其余时候返回0。==是判断两个值大小是否相同的运算符。), !=不等于

逻辑运算与、或、非:!, &, &&, |, ||

十二、数据的读取

1.最为常用的数据读取方式是用() 函数或()函数读取外部txt或csv格式的文件。

txt文件,制表符间隔; csv文件,逗号间隔。

一些R程序包(如foreign)也提供了直接读取Excel, SAS, dbf, Matlab, spss, systat, Minitab文件的函数。

()的使用

例:<-("D:/R/",header=T)header=T表示将数据的第一行作为标题。

(file=(),header=T)可以弹出对话框,选择文件。

3.数据量较大时用函数从外部txt文件读取

第1步将Excel中的数据另存为.txt格式(制表符间隔)或.csv格式。

第2步用()或()函数将数据读入R工作空间,并赋值给一个对象。

4.例子:

mydataframe<-("F:/KAGGLE1/",header=F)

命名读取函数数据位置文件夹名称是否读取头(T/F)

十三、向量、矩阵和数据框的创建

有时需要对读入的数据进行操作,将某一向量转换成矩阵,如条件筛选,此时将遇到向量、矩阵和数据框的生成、条件筛选等。

1.1四种类型的向量:

字符型character<-c("China", "Korea", "Japan", "UK", "USA", "France", "India", "Russia") ;

数值型numeric<-c(1, 3, 6, 7, 3, 8, 6, 4); 逻辑型logical<-c(T, F, T, F, T, F, F, T);

复数型略。

1.2创建向量 ——用X<-c()函数或者c() , rep() , seq() , ”:”

c(2,5,6,9)

rep(2,times=4)

seq(from=3, to=21, by=3 )

[1] 3 6 9 12 15 18 21

“:” 1:15 #意思是 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

通过与向量的组合,产生更为复杂的向量。 rep(1:2,c(10,15))

1.3向量创建——产生随机数

runif(10, min = 0, max= 1) rnorm(10, mean = 0, sd = 1)

1.4几个随机数的相关函数

概率密度 dunif(x, min=0, max=1, log = FALSE)

累积函数 punif(q, min=0, max=1, …)

分位数 qunif(p, min=0, max=1, …)

随机均匀分布 runif(n, min=0, max=1)

2.矩阵的创建

生成矩阵的函数 dim()和matrix()

dim() 定义矩阵的行列数,例如:

x <- 1:12

dim(x) <- c(3,4)

[,1] [,2] [,3] [,4]

[1,] 1 4 7 10

[2,] 2 5 8 11

[3,] 3 6 9 12

matrix.x <- matrix(1:12,nrow=3,byrow=T)

t(x)#转置 为行或列添加名称:() ()

3.数据框的创建

创建数据框的函数:(), (), cbind(), rbind()

cbind() # 按列组合成数据框

rbind() # 按行组合成数据框

() #生成数据框

head() #默认访问数据的前6行

4.列表的创建

列表可以是不同类型甚至不同长度的向量(数值型,逻辑型,字符型等等)、数据框甚至是列表的组合。

list() 例如 list(character,numeric,logical,matrix.x)

十四、对象类的判断与转换

对象类型判断: mode() 判断存储的类型 class() 判断数据的类

根据数据的类,采用相应的处理方法。

以下函数,主要用在函数处理异常时使用,目的是增强程序的稳健性。

类型判断

c() #返回值为TRUE或FALSE

l() #是否为逻辑值

tor() #是否为字符串

() #是否为空

() #是否为na

十五、元素引用与访问

1.向量内的元素引用

### Dalgaard书中的例子

<- c(5260, 5470, 5640, 6180, 6390, 6515, 6805, 7515, 7515, 8230, 8770)

<- c(3910, 4220, 3885, 5160, 5645, 4680, 5265, 5975, 6790, 6900, 7335)

[5]; #引用第5个元素

[c(3,5,7)] #引用第3,5,7个元素

v <- c(3,5,7); [v];

[1:5]; #引用第1到5个元素

[-c(3,5,7)] #去除第3,5,7元素

2.数据框内元素的引用

intake <- (, )

引用数据框中的元素

(1) $ 引用列,后面为列的名称

例如 intake$

(2) [,]方括号引用,逗号前为行,逗号后为列

intake[,1]; 引用第1列

intake[5,]; 引用第5行

intake[5,1]; 引用第1列,第5行

类的转换

c() #转换为数值型

l() #转换为逻辑型

tor() #转换为字符串

() #转换为矩阵

() #转换为数据框

() #转换为因子

i = 1:5; intake[i,] 引用1到5行

3.列表内元素的引用

列表内元素的引用可以用”[[]]” 如 list1[[c(1,2,3)]]

上述放于”[]”内的数字,称为下标。通过下标的变化,可以方便的访问向量、数据框、矩阵、列表内的各元素。熟悉下标的用法对掌握循环结构是非常重要的。

4.访问数据框内的元素

直接调用数据框内的列,以列的名称作为向量的名称

attatch()

detatch()

在函数内部,对数据进行相应调整

with() #with函数内部形成一个空间,在这个空间中,函数可以对列访问。

within()

transform() #数据的转换,如取log

subset() #取数据的子集

apply() #对数据表或矩阵应用某个函数,可减少循环

十六、条件筛选与排序

1.条件筛选

条件筛选是先对变量否满足条件进行判断,满足为TRUE,不满足为FALSE。之后再用逻辑值对向量内的元素进行筛选。

> 7000

[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE

[ > 7000]

> 7000 & <= 8000

[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE

[ > 7000 & <= 8000]

2.排序

将向量中的元素按照一定顺序排列。 sort() 按数值大小排序

举例:

intake$

sort(intake$)

order() 默认给出从小到大的出现序号。

order(intake$post)

o <- intake[order(intake$),]

十七、工作路径(工作空间、历史)

1.工作空间 P10

R的所有对象都在计算机内存的工作空间中。

ls() #列出工作空间中的对象 sink() #将运行结果保存到指定文件中

rm() #删除工作空间中的对象 getwd() #显示当前工作文件夹

rm(list=ls()) #删除空间中所有对象 setwd() #设定工作文件夹

() #保存工作镜像

2.输入历史History

• 输入的命令,在R中作为历史history保存,可输入函数

• history() # 查看输入历史

• history(Inf) # 查看打开R之后所有的输入

• 可用向上或向下的箭头切换输入的行。

十八、脚本编程Scripting

1.脚本语言

脚本语言(scripting language)又称动态语言,是依靠解释器完成相应的功能的一类计算机语言,通常以ASCII码的文本格式保存源程序。

1.1特点

脚本语言语法和结构通常比较简单,不需要编译,通过解释器对脚本进行解释,从而给出结果,能用简单的代码完成复杂的功能,但是速度较慢。

1.2常见的脚本语言

Windows批处理程序, PHP, Perl, Python, Ruby, JavaScript等。

2.集成开发环境

很多计算机语言都有IDE (integrated development environment),即集成开发环境,如 Windows的VisualStudio, Visual Basic等等。

但是R通常无需集成开发环境,脚本在一般的文本编辑器里即可编辑。

如 Windows自带的记事本,Notepad++, UltraEdit,TinnR。

Linux下的Vi, Vim, Emacs等等。

在代码较多的情况下,常需要对行数、函数、括号、函数选项等进行高亮显示,设置成不同的颜色,以减少错误的发生。

3.编辑器

R自带的脚本编辑器 Emacs (/software/emacs/ )

Editplus ( ) Notepad++ 与NpptoR组合

TinnR (/Tinn-R/ ) (/ )

Ultraedit (/ ) 记事本或写字板 等等

十九、R绘图

R具备卓越的绘图功能,通过参数设置对图形进行精确控制。绘制的图形能满足出版印刷的要求,可以输出Jpg、tiff、eps、emf、pdf、png等各种格式。

通过与GhostScript软件的结合,可以生成600dpi,1200dpi的等各种分辨率和尺寸的图形。

绘图是通过绘图函数结合相应的选项完成的。 绘图函数包括高级绘图函数和低级绘图函数。

1.高级绘图函数:

绘制散点图等多种图形,

plot()

根据数据的类,调用相应的函数绘图

hist() 频率直方图

boxplot() 箱线图

stripchart() 点图

barplot() 柱状图

dotplot() 点图

piechart() 饼图

matplot() 数学图形

2.低级绘图函数:

lines()

curve()

abline()

points()

segments()

arrows()

添加线

添加曲线

添加给定斜率的线

添加点

折线

箭头

axis()

box()

title()

text()

mtext()

坐标轴

外框

标题

文字

图边文字

3.绘图参数

参数用在函数内部,在没有设定值时使用默认值。

font = 字体,lty = 线类型,lwd = 线宽度,pch = 点的类型,

xlab = 横坐标,ylab = 纵坐标,xlim = 横坐标范围,ylim = 纵坐标范围,

也可以对整个要绘制图形的各种参数进行设定,参见 par()

4. 分步绘图

1.打开绘图窗口,不绘制任何对象

plot(x, y, type="n", xlab="", ylab="", axes=F)

2.添加坐标点 points(x,y)

3.添加坐标轴

axis(1); axis(at=seq(0.2,1.8,0.2), side=2)

4.补齐散点图的边框 box()

5.添加标题、副标题、横轴说明、纵轴说明

title(main="Main title", sub="subtitle", xlab="x-label", ylab="y-label")

5.在原有图形上添加元素

举例:

x <- rnorm(100) # 生成随机数

hist(x,freq=F) # 绘制直方图

curve(dnorm(x),add=T) # 添加曲线

h <- hist(x, plot=F) # 绘制直方图

ylim <- range(0, h$density, dnorm(0)) #设定纵轴的取值范围

hist(x, freq=F, ylim=ylim) #绘制直方图

curve(dnorm(x),add=T,col="red") #添加曲线

二十、编写函数

1.编程基础

R可以灵活的编写程序,用户自己编写的程序可以直接调用。编程时无需声明变量的类型,这与C,C++等语言不同。基本格式:

函数名 <- function(数据,参数1= 默认值,…)

{

异常处理;

表达式(循环/判别);

return(返回值);

}

函数内部也可用#添加注释

2.函数实例:data2mat()

3.程序流程控制

3.1 条件if

if(条件) 表达式

if(条件) 表达式1 else 表达式2

举例:

p = 0.03 {

if(p<=0.05) print("p <= 0.05!")

else print("p > 0.05!")

}

3.2 循环 for, while

for(变量 in 向量) 表达式 while(条件) 表达式

用法:

用法: i <- 1

for(i in 1:10) print(i) while(i<10){ print(i); i <- i + 1}

3.3 返回值

• 返回值表示函数输出的结果。

• 返回值必须是一个对象。

• R默认将最后一行作为返回值。

• 如果函数的结果需要有多个返回值,可以创建一个list(),并返回该对象。

• 也可以用return()函数,设定返回值。

• 但是一个函数的返回的对象只有一个。

3.4 异常处理

• 如数据输入不能满足要求,或者参数设定错误等等,可能造成函数给出错误的结果,则需要对函数的运行过程发出警告或终止,以提高程序的稳健性。

• 警告的写法

if(any((inputdata)))

inputdata <- (inputdata)

cat(“NAs are found in the input data, and has been removed.n")

• 终止的写法 if(any((xx))) stop("NAs are not allowed!n")

3.5 函数举例:

问题:输入直角三角形的两个边长,求其斜边长。

定义函数:

rcal <- function(x,y){

z <- x^2 + y^2

result <- sqrt(z)

return(result)

}

调用函数:

rcal(3,4)

二十一、数据保存

()

()

()

sink()

unlink()

若有LaTeX基础,可以用 :Sweave() 函数

该函数能将脚本、程序说明和运算结果直接保存成.tex文件,用LaTeX编译成pdf文件。

代码与实际操作

1.(127.0.0.1:30126/library/base/html/)example

an <- ("arrg")赋值

(an) # TRUE判断是否是name格式属性?

mode(an) # name an 的模式是什么?

typeof(an) # symbol an的数据类型是什么?symbol

2.现有6名患者的身高和体重,检验体重除以身高的平方是否等于22.5。(从数据输入到t检验)

编号

身高m

体重kg

1

1.75

60

2

1.80

72

3

1.65

57

4

1.90

90

5

1.74

95

6

1.91

72

代码:

height<-c(1.75,1.80,1.65,1.90,1.74,1.91)

weight<-c(60,72,57,90,95,72)

number_1<-1:6

X<-(weight/height^2)

(X,mu=22.5)

#结果显示

One Sample t-test

data: X

t = 0.34488, df = 5, p-value = 0.7442

alternative hypothesis: true mean is not equal to 22.5

95 percent confidence interval:

18.41734 27.84791

sample estimates:

mean of x

23.13262

height<-c(1.75, 1.80, 1.65, 1.90, 1.74, 1.91)

weight<-c(60, 72, 57, 90, 95, 72)

<-height^2

ratio<-weight/

(ratio, mu=22.5)

#结果显示

One Sample t-test

data: ratio

t = 0.34488, df = 5, p-value = 0.7442

alternative hypothesis: true mean is not equal to 22.5

95 percent confidence interval:

18.41734 27.84791

sample estimates:

mean of x

23.13262

T检验的原假设是U≠0或者U1≠U2,α=0.05水平的话,P>0.05,不能拒绝原假设,也就是说U1不等于U2统计学上是支持的。

T检验单侧与双侧的关系,双侧要求严格,其结果相对比较稳健;确定分布的话选择(没有负数)单侧检验,不确定的话建议选择反侧检验。

统计书(P104)

3.读取文件并进行T检验

>("C:/Users/Administrator/Desktop/",header=T)

>BMI<-c(weight/height^2)

>(BMI,mu=22.5)

height weight

1 1.75 60

2 1.80 72

3 1.65 57

4 1.90 90

5 1.74 95

6 1.91 72

或者

> <-("C:/Users/Administrator/Desktop/",header=T)

> attach() #意义是让函数能够直接进行运算,而不需要赋值。

The following objects are masked _by_ .GlobalEnv:

height, weight

>ratio<-weight/height^2

>(ratio)

One Sample t-test

data: ratio

t = 12.611, df = 5, p-value = 5.569e-05

alternative hypothesis: true mean is not equal to 0

95 percent confidence interval:

18.41734 27.84791

sample estimates:

mean of x

23.13262

4.单因素方差分析

将三种不同菌型的伤寒病毒a,b,c分别接种于10,9,和11只小白鼠上,观察其存活天数,问三种菌型下小白鼠的平均存活天数是否有显著差异。

a菌株:2, 4, 3, 2, 4, 7, 7, 2, 5, 4

b菌株:5, 6, 8, 5, 10, 7, 12, 6, 6

c菌株:7,11,6, 6, 7, 9, 5, 10, 6, 3, 10

#数据读取,将中的内容保存到bac中,header=T表示保留标题行。

bac<-("d:/",header=T)

#将bac数据框中的type转换为因子(factor)

bac$type<-(bac$type)

<-aov(lm(day~type, data=bac))

summary()

boxplot(day~type,data=bac,col="red")

5.下标和条件筛选

vector1<-seq(from=2, to=50, by=2) #创建一个2到50的向量 vector1 2, 4, 6, 8, ..., 48, 50 #

vector1[20] #选取vector1中的第20个元素

vector1[c(10,15,20)] #选取vector1中的第10,15,20个元素

vector1[10:20] #选取vector1中的第10到20个元素

vector1[vector>40] #选取vector1中值大于40的元素

6.了解工作路径

6.1查看当前R工作的空间目录

getwd()

6.2 将R工作的路径设置为 d:/data/

setwd("d:/data")

("")

load("")

6.3 历史

history(Inf)

7.例-线性回归

对一批涂料进行研究,确定搅拌速度对杂质含量的影响,数据如下,试进行回归分析

表3 搅拌速度对涂料中杂质的影响

转速rpm 20

杂质率% 8.4

脚本举例

#1.编辑脚本并保存:将以下代码粘贴到编辑器中,另存为regression.r文件。

rate<-c(20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42)

impurity <-c(8.4, 9.5, 11.8, 10.4, 13.3, 14.8, 13.2, 14.7, 16.4, 16.5, 18.9, 18.5)

plot(impurity~rate)

reg<-lm(impurity~rate)

abline(reg,col="red")

summary(reg)

rpm<-seq(from=20,to=42,by=2) #生成一个从20开始,间隔2,到42的向量

mean(rpm)

rate<-c(8.4, 9.5, 11.8, 10.4, 13.3, 14.8, 13.2, 14.7, 16.4, 16.5, 18.9, 18.5)

mean(rate)

plot(rate,rpm) #一般线性回归都要先画散点图观察。Y轴是rpm,X轴是rate。

plot(rate~rpm) #一般线性回归都要先画散点图观察。Y轴是rate,X轴是rpm。

reg<-lm(rate~rpm)

print(lm(rate~rpm))

cor(rate,rpm)#计算二者的相关系数

print(reg)

abline(=”red”)

plot(reg)

summary(reg)

#2.运行脚本:三种方式:

#2A.通过source()函数运行

source("d:/regression.r")

#2B. 通过R脚本编辑器运行:路径:

RGui>File>Open Script #Ctrl+R运行

#2C 直接粘贴到R控制台,ctrl+c, ctrl+v ,第三种最为简单直接

8.绘图

#1.生成0到2之间的50个随机数,分别命名为x,y

x <- runif(50,0,2)

y <- runif(50,0,2)

22

9.5

24

11.8

26

10.4

28

13.3

30

14.8

32

13.2

34

14.7

36

16.4

38

16.5

40

18.9

42

18.5

#2.绘图:将主标题命名为“散点图”, 横轴命名为”横坐标”, 纵轴命名为“纵坐标”

plot(x, y, main="散点图", xlab="横坐标", ylab="纵坐标")

text(0.6,0.6,"text at (0.6,0.6)")

abline(h=.6,v=.6)

#3.分步绘图

1.打开绘图窗口,不绘制任何对象

plot(x, y, type="n", xlab="", ylab="", axes=F)

2.添加坐标点 points(x,y)

3.添加坐标轴

axis(1); axis(at=seq(0.2,1.8,0.2), side=2)

4.补齐散点图的边框 box()

5.添加标题、副标题、横轴说明、纵轴说明

title(main="Main title", sub="subtitle", xlab="x-label", ylab="y-label")

#4.一页多图

par()

par(mfrow=c(2,2)

...

#5练习1 将Rplots.r中的代码拷贝到R控制台中,查看R绘制的图形。

练习2 对例进行回归分析,并绘制散点图,并为散点图添加回归直线。

plot(impurity~rate)

reg<-lm(impurity~rate)

abline(reg,col="red")

summary(reg)

#6.箱线图修饰前后(左:默认值,右:修改属性后)

函数的调用方法, 函数名() 。 如plot(), lm(),并将对象放入括号中。

箱线图绘制函数的调用

boxplot(day~type, data=bac, col="red", xlab="Virus", ylab="days")

day~type,以type为横轴,day为纵轴绘制箱线图。

data=bac数据来源bac

col=“red”箱线图为红色

xlab=“Virus”横轴名称为Virus

ylab=“days”纵轴名称为days

9.编写函数

编写一个函数,给出两个数之后,直接给出这两个数的平方和。

sqtest<-function(x, y){

z1=x^2; z2=y^2; z3=z1+z2;

return(z3);

}


本文标签: 函数 数据 进行 绘图