R语言-向量构造 及 函数构造
来源:互联网 发布:darma 知乎 编辑:程序博客网 时间:2024/05/19 12:41
1,生成向量的方法
(1) seq()函数
> x=seq(from=1, to=5, by=0.5)> x# [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
(2)rep()函数
> x=rep(pi, times=5)> x# [1] 3.141593 3.141593 3.141593 3.141593 3.141593
(3)seq 与 rep 结合使用
> x=rep(seq(from=1,to=5,by=1), times=5)> x# [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
(4)自主建立向量
> x=c(rep(seq(from=1,to=5,by=1), times=2),pi,17,24)> x # [1] 1.000000 2.000000 3.000000 4.000000 5.000000 1.000000 2.000000 3.000000 # [9] 4.000000 5.000000 3.141593 17.000000 24.000000
2,选择向量元素
(1)x[ i ] 形式,i表示下标位
> x# [1] 1.000000 2.000000 3.000000 4.000000 5.000000 1.000000 2.000000 3.000000# [9] 4.000000 5.000000 3.141593 17.000000 24.000000> x[11]# [1] 3.141593
(2)x[ m: n] 形式,选择一段元素
> x[c(11:13)]# [1] 3.141593 17.000000 24.000000> x[seq(from=11,to=13,b=1)] #用了seq函数# [1] 3.141593 17.000000 24.000000
(3)使用逻辑向量从数据向量中选择元素
> x>3 # 逻辑判断x的各元素# [1] FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE> x[x>3] #选择TRUE的位置的元素# [1] 4.000000 5.000000 4.000000 5.000000 3.141593 17.000000 24.000000> x%%2==0 #选择奇数# [1] FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE TRUE> x[x%%2==1] # [1] 1 3 5 1 3 5 17
(4)自定义行名,取数
> year=c(1983,1982,1988,1990)> names(year)=c('A','B','C','D')> year# A B C D # 1983 1982 1988 1990 > year[c('A','D')]# A D # 1983 1990
3,函数编写
(1)if选择函数
fun.test <- function(a, b, method = "add"){ ## function关键字,fun.test函数名 if(method == "add"){ ## 如果if或者for/while等后面的语句只有一行,则无需使用花括号 res <- a + b } if(method == "subtract"){ res <- a - b } return(res) ## 返回值}
> ### 检验结果> fun.test(a = 10, b = 8, method = "add")# [1] 18> ### 检验结果> fun.test(a = 10, b = 8, method = "subtract")# [1] 2
(2)for循环函数
### for循环与算法test.sum <- function(x){ res <- 0 ## 设置初始值,在第一次循环的时候使用 for(i in 1:length(x)){ res <- res + x[i] ## 这部分是算法的核心,总是从右面开始计算,结果存到左边的对象 } return(res)}### 检验函数a <- c(1,2,1,6,1,8,9,8)test.sum(a)sum(a)
(3)return函数
## 计算标准差sd2 <- function(x){ # 异常处理,当输入的数据不是数值类型时报错 if(!is.numeric(x)){ stop("the input data must be numeric!\n") } # 异常处理,当仅输入一个数据的时候,告知不能计算标准差 if(length(x) == 1){ stop("can not compute sd for one number, a numeric vector required.\n") } ## 初始化一个临时向量,保存循环的结果, ## 求每个值与平均值的平方 x2 <- c() ## 求该向量的平均值 meanx <- mean(x) ## 循环 for(i in 1:length(x)){ xn <- x[i] - meanx x2[i] <- xn^2 } ## 求总平方和 sum2 <- sum(x2) # 计算标准差 sd <- sqrt(sum2/(length(x)-1)) # 返回值 return(sd) }## 程序的检验## 正常的情况sd2(c(2,6,4,9,12))## 一个数值的情况sd2(3)## 输入数据不为数值类型时sd2(c("1", "2"))
0 0
- R语言-向量构造 及 函数构造
- R-语言构造函数随机数据
- c语言构造函数
- 构造函数 及复制构造函数
- 构造函数及关键字
- Java 构造函数及构造代码块
- R语言︱构造新序列
- C语言中的构造函数
- C++语言之构造函数
- 关于类及构造函数!
- unity之向量构造
- 类的构造函数及构造函数重载
- c++初始化列表及构造函数调用构造函数
- C++构造函数详解及显式调用构造函数
- C++构造函数详解及显式调用构造函数
- C++构造函数详解及显式调用构造函数
- C++构造函数详解及显式调用构造函数
- C++构造函数详解及显式调用构造函数
- 多文件上传和下载
- SWT中的模式和非模式窗体(modal or non-modal)
- Android开发自总结(一) ndk-gdb的使用
- JAVA菜鸟入门篇 - 面向对象三大特征之一:继承 ,方法重写(override)和Object类 (十四)
- JRE与JVM、JDK的区别
- R语言-向量构造 及 函数构造
- CSocket建立TCP连接
- Python高级编程之数据库sqlite3(二)
- nginx + tomcat7 配置集群环境 Windows
- Android 自定义控件详解
- Matlab 读取文件夹里所有的文件
- Java技术_每天掌握一种设计模式(001)_设计模式概念及分类
- Linux下获取本地IP地址--------getifaddrs
- synchronized 与 Lock 的那点事