R语言第二章 数组、数组框、文本读、循环语句使用

R语言

 

一、数组

 

> x=c(1:6)

> x

[1] 1 2 3 4 5 6

> is.vector(x)                                      #判断x是一个向量

[1] TRUE

> is.array(x)                                        #判断x不是一个数组

[1] FALSE

> dim(x) <-c(2,3)                                #使用dim (x)赋值一个(2,3)数组

> x

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

[1,]   1    3    5

[2,]   2    4    6

> is.array(x)                                        #再次判断x是否是数组

[1] TRUE

> is.matrix(x)                                      #判断x是否是矩阵(注意:矩阵是数组的特殊情况)

[1] TRUE

 

二、数据框

 

数据框和矩阵的区别是:数据框是有字符和数字组成的,而矩阵全是数字组成的。

在统计学了,数据框更能体现它的样子。

在这里可以数据组成一个数据框使用data.frame(x1,x2)函数来指定x1 and x2两个向量,

向量可以是字符型和数字型。(注意:x1 and x2向量的长度必须相等 )

 

可以使用(x=data.frame(‘重量’=x1,’运费’=x2)) 来替换x1 and x2的列头,相当于sql语句中的

字段的别名。(注意:跟sql不一样的地方是它是直接替换掉了,但sql只是个别名)

 

三、画散点图

 

函数plot()

 

这个函数主要的作用是用来画图的。(在后续讲解)

 

四、读文本文件数据

 

函数 read.table()

 

>(X=read.table("/root/R/2/abc"))

  V1V2

1 176 85

2 168 80

3 156 60

4 167 60

5 170 90

6 171 95

 

读剪切板操作

> y<-read.table("/root/R/2/abc",header=F)             #header是不读列头

> y

  V1V2

1 176 85

2 168 80

3 156 60

4 167 60

5 170 90

6 171 95

 

 

读excel文件数据另类方法

 

1、 先安装ODBC源

apt-get installunixodbc unixodbc-dev

2、安装JDK包

1、创建java目录

mkdir /usr/java

2、解压包到/usr/java

tar –zxvf jdk-8u91-linux-x64.gz

3、在/etc/profile 文件下创建java环境变量(注意:在尾部加入,重启系统生效)

JAVA_HOME=/usr/java/jdk1.8.0_91

PATH=$PATH:$JAVA_HOME/bin

CLASSPATH=.:$JAVA_HOME/lib

export JAVA_HOME

export PATH

export CLASSPATH

 

 

2、 安装rjava包和xlsx包

执行命令:R CMD javareconf

root@strom-virtual-machine:/usr/java#R CMD javareconf

Java interpreter: /usr/java/jdk1.8.0_91/jre/bin/java

Javaversion     : 1.8.0_91

Java homepath   : /usr/java/jdk1.8.0_91

Javacompiler    : /usr/java/jdk1.8.0_91/bin/javac

Java headersgen.: /usr/java/jdk1.8.0_91/bin/javah

Java archivetool: /usr/java/jdk1.8.0_91/bin/jar

 

trying tocompile and link a JNI program

detected JNI cppflags    : -I$(JAVA_HOME)/include-I$(JAVA_HOME)/include/linux

detected JNIlinker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm

gcc -std=gnu99-I/usr/share/R/include -DNDEBUG -I/usr/java/jdk1.8.0_91/include-I/usr/java/jdk1.8.0_91/include/linux    -fpic  -g -O2-fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g  -c conftest.c -o conftest.o

gcc -std=gnu99-shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o conftest.soconftest.o -L/usr/java/jdk1.8.0_91/jre/lib/amd64/server -ljvm -L/usr/lib/R/lib-lR

 

 

JAVA_HOME        : /usr/java/jdk1.8.0_91

Java librarypath: $(JAVA_HOME)/jre/lib/amd64/server

JNI cppflags    : -I$(JAVA_HOME)/include-I$(JAVA_HOME)/include/linux

JNI linker flags: -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm

Updating Javaconfiguration in /usr/lib/R

Done.

进入R语言环境安装rjava和xlsx包

         install.packages("rJava")

         install.packages("xlsx")

         安装顺利的话就结束了

        

3、 使用read.xlsx() 函数读xlsx文件

>read.xlsx(file="/root/R/02/text.xlsx",header=T,sheetIndex=1)

  X170 X45

1  165  80

2  168  70

3  169  85

 


五、循环语句

 

For语句

 

> a <-c(1,59)                                               #将向量1到59赋值给a

> for (i in 1:59) {a[i]=i*2+3}                     #循环执行1到59的值,每次值*2+3

> a

 [1]  5   7   9 11  13  15 17  19  21 23  25  27 29  31  33 35  37  39  41

[20] 43  45  47 49  51  53 55  57  59 61  63  65 67  69  71 73  75  77  79

[39] 81  83  85 87  89  91 93  95  97  99101 103 105 107 109 111 113 115 117

[58] 119 121

 

 

While语句

 

> a[1]=5                                                      

> i=1

> while (a[i]<121){i=i+1;a[i]=a[i-1]+2} #满足a的值小于121才能进入循环体执行

> a

 [1]  5   7   9  11 13  15  17 19  21  23 25  27  29 31  33  35 37  39  41

[20] 43  45  47 49  51  53 55  57  59 61  63  65 67  69  71 73  75  77  79

[39] 81  83  85 87  89  91 93  95  97  99101 103 105 107 109 111 113 115 117

[58] 119 121

 

六、执行R脚本

使用函数source() 、print()

root@strom-virtual-machine:~/R/02#cat text.r

a <- c(1,59);

a[1]=5;

i=1;

while(a[i]<121) {i=i+1;a[i]=a[i-1]+2};

print(a);

 

 

七、综合性例子

模拟产生统计专业同学的名单(学号区分),记录数学分析,线性代数,概率统计十三科成绩,然后进行一些统计分析

 

>num=seq(10378001,10378100)                   #代表100个学号

> num

  [1] 10378001 10378002 10378003 1037800410378005 10378006 10378007 10378008

  [9] 10378009 10378010 10378011 1037801210378013 10378014 10378015 10378016

 [17] 10378017 10378018 10378019 1037802010378021 10378022 10378023 10378024

 [25] 10378025 10378026 10378027 1037802810378029 10378030 10378031 10378032

 [33] 10378033 10378034 10378035 1037803610378037 10378038 10378039 10378040

 [41] 10378041 10378042 10378043 1037804410378045 10378046 10378047 10378048

 [49] 10378049 10378050 10378051 1037805210378053 10378054 10378055 10378056

 [57] 10378057 10378058 10378059 1037806010378061 10378062 10378063 10378064

 [65] 10378065 10378066 10378067 1037806810378069 10378070 10378071 10378072

 [73] 10378073 10378074 10378075 1037807610378077 10378078 10378079 10378080

 [81] 10378081 10378082 10378083 1037808410378085 10378086 10378087 10378088

 [89] 10378089 10378090 10378091 1037809210378093 10378094 10378095 10378096

 [97] 10378097 10378098 10378099 10378100

 

使用runif和rnorm 函数

ruif() 函数是均匀分布函数

>x1=round(runif(100,min=80,max=100)) 

#使用均匀分布100个元素,下线是80 ,上线是100,最后四舍五入

> x1

  [1] 88  83  83 95  92  97 91  99  93 95  85  99 85  90  86 87  91  98

 [19] 83  99  90 82  80  89 92  85  80 90  80 100  86 93  99  80 87  93

 [37] 96  88  96  96  91 95  83  88 95  93  91 86  85  85 93  82  97  89

 [55] 96  83  85 95  87  83 88  90  98 96  95  86 84  95  92 92  86  82

 [73] 90  96  87 93  87  91 80  86  92 81  81  95 95  97  93 83  98  90

 [91] 100 96  95  87 90  93  86 89  95  87


 

rnorm() 函数是正太分布函数

>x2=round(rnorm(100,mean=80,sd=7))  

#正太分布100个元素,平均值是80分,标准差是7,最后四舍五入

> x2

  [1] 75  77  78 96  86  80 73  78  84 88  72  77 73  71  75 63  84  77

 [19] 65  75 100  84 76  87  73 74  83  80 72  76  71 76  95  94 79  74

 [37] 81  89  75 77  80  69 74  73  89 74  90  83  76  67 69  77  82  83

 [55] 76  89  74 74  82  73 86  80  69 82  72  78 85  74  77 86  71  86

 [73] 80  83  75 71  74  87 82  80  85 81  80  74 78  77  94 71  72  78

 [91] 88  76  76 89  88  73 74  80  89  75

 

>x3=round(rnorm(100,mean=83,sd=18))

#正太分布100个元素,平均值是83,标准差是18,最后四舍五入

(注意:正太分布没有上线跟下线的概念,而这里只有平均值和标准差,所以这里超出100)

> x3

  [1] 65  97  73 81  85 122  74 92  87 103  52 78  66  81 121 97 118  90

 [19]  64104  90 100  73 83  67  97 77  79  68 110 121 72  85  91  73142

 [37] 86  78  90 70  72  98 100 99  26  91 68  82  80  68109  78 63  89

 [55] 82  83 109  64  69118  93 87 103  94  92 84  75  72 88  62 102  79

 [73] 63  87  88  96100 111  51  64 106 108 73  69 101  80 112 49 109 100

 [91] 82  66  47 53  67  89 70  75  69  77

 

>x3[which(x3>100)]=100   #把超过100分的值全部替换成100

> x3

  [1]  65 97  73  81  85100  74 92  87 100  52 78  66  81 100 97 100  90

 [19]  64100  90 100  73 83  67  97 77  79  68 100 100 72  85  91  73100

 [37] 86  78  90 70  72  98 100 99  26  91 68  82  80  68100  78 63  89

 [55] 82  83 100  64  69100  93 87 100  94  92 84  75  72 88  62 100  79

 [73] 63  87  88  96100 100  51  64 100 100 73  69 100  80 100 49 100 100

 [91] 82  66  47 53  67  89 70  75  69  77

 


合成数据框并保存到硬盘上

使用的函数是data.frame() 、write.table()

>x=data.frame(num,x1,x2,x3)               #使用数据框进行输出值

> x

         num x1  x2  x3

1   10378001 88  75  65

2   10378002 83  77  97

3   10378003 83  78  73

4   10378004 95  96  81

5   10378005 92  86  85

6   10378006 97  80 100

7   10378007 91  73  74

8   10378008 99  78  92

9   10378009 93  84  87

 

>write.table(x,file="/root/R/02/mark.txt",col.names=F,row.names=F,sep="")

使用write.table函数将data.frame(num,x1,x2,x3)写入到/root/R/02/mark.txt文件中

        

计算各科平均分

使用函数mean()、colMeans()、apply()

        

>mean(x)                 #算出各科的平均值

num                       x1          x2          x3

10378050.50       90.88       88.56       89.10

 

>colMeans(x)          #对列求平均值

num                       x1            x2          x3

10378050.50       89.88       78.56       79.10

 

> colMeans(x)[c("x1","x2","x3")]                  #求出x1,x2,x3的平均值,学号去除

x1        x2      x3

89.88  78.56 79.10

 

>apply(x,2,mean)                            

#在x框上对列做平均值

(注意:“2”表示在列上做平均值,“1”表示行)

num                          x1         x2          x3

10378050.50      89.88       78.56       79.10

 

> apply(x,2,max)            #在列上求最大值(最高分)

num                  x1      x2       x3

10378100     100       96     100

 

 

> apply(x,2,min)               #在列上求最小值(最低分)

num                 x1      x2       x3

10378001       81       58      28

 

> apply(x[c("x1","x2","x3")],1,sum)

#先把x1,x2,x3值取出后,在每一行值算出和

  [1] 275 260 231 259 253 251253 225 265 271 228 276 265 237 252 239 240 280

 [19] 234 277 244 252 263 242282 270 241 283 233 240 226 222 241 250 275 221

 [37] 244 265 244 230 208 267229 250 275 267 207 262 233 280 218 263 222 266

 [55] 240 224 259 236 249 226256 262 232 249 255 233 244 260 271 244 228 198

 [73] 215 258 226 242 260 237227 276 272 262 261 271 244 253 247 250 226 227

 [91] 265 217 221 260 238 244237 242 261 263

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
《javascript dom编程艺术:第2版》讲述了javascript、dom 和html5 的基础知识,着重介绍dom 编程技术背后的思路和原则:平稳退化、渐进增强和以用户为中心等。这些概念对于任何前端web 开发工作都非常重要。本书将这些概念贯穿在书中的所有代码示例中,以便呈现用来创建图片库页面的脚本、用来创建动画效果的脚本和用来丰富页面元素呈现效果的脚本,最后结合所讲述的内容创建了一个实际的网站。 《javascript dom编程艺术:第2版》适合web 设计师和开发人员阅 第1章 javascript简史 1 1.1 javascript的起源 1 1.2 dom 2 1.3 浏览器战争 3 1.3.1 dhtml 3 1.3.2 浏览器之间的冲突 3 1.4 制定标准 4 1.4.1 浏览器以外的考虑 4 1.4.2 浏览器战争的结局 5 1.4.3 崭新的起点 5 1.5 小结 6 第2章 javascript语法 8 2.1 准备工作 8 2.2 语法 10 2.2.1 语句 10 2.2.2 注释 10 2.2.3 变量 11 2.2.4 数据类型 14 2.2.5 数组 16 .2.2.6 对象 18 2.3 操作 19 2.4 条件语句 21 2.4.1 比较操作符 22 2.4.2 逻辑操作符 23 2.5 循环语句 24 2.5.1 while循环 24 2.5.2 for循环 25 2.6 函数 26 2.7 对象 29 2.7.1 内建对象 30 2.7.2 宿主对象 31 2.8 小结 31 第3章 dom 32 3.1 文档:dom中的“d” 32 3.2 对象:dom中的“o” 32 3.3 模型:dom中的“m” 33 3.4 节点 35 3.4.1 元素节点 35 3.4.2 文本节点 35 3.4.3 属性节点 36 3.4.4 css 36 3.4.5 获取元素 38 3.4.6 盘点知识点 42 3.5 获取和设置属性 43 3.5.1 getattribute 43 3.5.2 setattribute 44 3.6 小结 45 第4章案例研究:javascript图片库 46
目录: 第1章 5个例子 1 1.1 开始 1 1.2 编辑、编译和运行 3 1.3 Hello Who? 6 1.4 大数字——二维切片 8 1.5 栈——自定义类型及其方法 12 1.6 americanise示例——文件、映射和闭包 18 1.7 从极坐标到笛卡儿坐标 ——并发 28 1.8 练习 33 第2章 布尔与数值类型 35 2.1 基础 35 2.2 布尔值和布尔表达式 39 2.3 数值类型 40 2.3.1 整型 42 2.3.2 浮点类型 46 2.4 例子:statistics 53 2.4.1 实现一个简单的统计函数 54 2.4.2 实现一个基本的HTTP服务器 55 2.5 练习 58 第3章 字符串 60 3.1 字面量、操作符和转义 61 3.2 比较字符串 63 3.3 字符和字符串 65 3.4 字符串索引与切片 67 3.5 使用fmt包来格式化字符串 69 3.5.1 格式化布尔值 73 3.5.2 格式化整数 74 3.5.3 格式化字符 75 3.5.4 格式化浮点数 75 3.5.5 格式化字符串和切片 76 3.5.6 为调试格式化 78 3.6 其他字符处理相关的包 80 3.6.1 strings包 81 3.6.2 strconv包 86 3.6.3 utf8包 90 3.6.4 unicode包 91 3.6.5 regexp包 92 3.7 例子:m3u2pls 101 3.8 练习 106 第4章 集合类型 108 4.1 值、指针和引用类型 108 4.2 数组和切片 115 4.2.1 索引与分割切片 119 4.2.2 遍历切片 119 4.2.3 修改切片 121 4.2.4 排序和搜索切片 125 4.3 映射 128 4.3.1 创建和填充映射 129 4.3.2 映射查询 131 4.3.3 修改映射 132 4.3.4 键序遍历映射 132 4.3.5 映射反转 133 4.4 例子 134 4.4.1 猜测分隔符 134 4.4.2 词频统计 136 4.5 练习 141 第5章 过程式编程 144 5.1 语句基础 144 5.1.1 类型转换 147 5.1.2 类型断言 148 5.2 分支 149 5.2.1 if语句 150 5.2.2 switch语句 151 5.3 for循环语句 158 5.4 通信和并发语句 160 5.5 defer、panic和recover 166 5.6 自定义函数 171 5.6.1 函数参数 172 5.6.2 init()函数和main()函数 175 5.6.3 闭包 176 5.6.4 递归函数 178 5.6.5 运行时选择函数 181 5.6.6 泛型函数 183 5.6.7 高阶函数 187 5.7 例子:缩进排序 192 5.8 练习 197 第6章 面向对象编程 199 6.1 几个关键概念 199 6.2 自定义类型 201 6.2.1 添加方法 203 6.2.2 验证类型 207 6.3 接口 209 6.4 结构体 217 6.5 例子 224 6.5.1 FuzzyBool——一个单值自定义类型 224 6.5.2 Shapes——一系列自定义类型 229 6.5.3 有序映射——一个通用的集合类型 240 6.6 练习 248 第7章 并发编程 251 7.1 关键概念 252 7.2 例子 256 7.2.1 过滤器 256 7.2.2 并发的Grep 260 7.2.3 线程安全的映射 266 7.2.4 Apache报告 271 7.2.5 查找副本 278 7.3 练习 285 第8章 文件处理 287 8.1 自定义数据文件 287 8.1.1 处理JSON文件 290 8.1.2 处理XML文件 295 8.1.3 处理纯文本文件 301 8.1.4 处理Go语言二进制文件 307 8.1.5 处理自定义的二进制文件 309 8.2 归档文件 317 8.2.1 创建zip归档文件 317 8.2.2 创建可压缩的tar包 319 8.2.3 解开zip归档文件 321 8.2.4 解开tar归档文件 322 8.3 练习 324 第9章 包 326 9.1 自定义包 326 9.1.1 创建自定义的包 327 9.1.2 导入包 333 9.2 第三方包 334 9.3 Go命令行工具简介 335 9.4 Go标准库简介 336 9.4.1 归档和压缩包 336 9.4.2 字节流和字符串相关的包 336 9.4.3 容器包 337 9.4.4 文件和操作系统相关的包 339 9.4.5 图像处理相关的包 341 9.4.6 数学处理包 341 9.4.7 其他一些包 341 9.4.8 网络包 342 9.4.9 反射包 343 9.5 练习 346
Perl语言入门(第五版),本书是为中文版本,英文原版下载地址:http://download.csdn.net/source/2801846。 原书名: Learning Perl, 5th Edition;原出版社: O'Reilly Media, Inc. ;作者: Randal L.Schwartz Tom Phoenix brian d foy;译者: 盛春 蒋永清 王晖;出版社:东南大学出版社 内容简介 《perl语言入门》也就是大家所称道的“小骆驼书”,是perl程序设计人员最为仰赖的启蒙物之一。自1993年以来,这本书就成为热卖的perl语言教学材料,而此次新版又涵盖了perl 5.10的最新变化。本书的诸位作者自1991年起就开始在stonehenge consulting从事perl教学工作,多年的课堂教学实践和积累下来的点滴经验,形成了本书特有的教学节奏,以及务实的知识点取舍。随文而至的习题,可以让你及时巩固各种概念,强化理解和吸收。本书内容涵盖:. ·perl的变量类型 ·子程序 ·文件的操作 ·正则表达式 ·字符串的操作.. ·列表与排序 ·进程的管理 ·智能匹配 ·第三方模块的使用 有些人只是想要完成任务,perl语言为此而生。perl的最初目标只是为了协助unix系统管理员完成日常繁琐的文本数据处理工作。时至今日,perl已发展成为一套功能齐备的程序语言,几乎可以在任何操作系统上完成各种任务——从简单的命令行工具到web应用开发,及至生物信息学、金融数据分析等等不一而足。其他书籍可能会着重于教会你使用perl语言来编程,可本书不同,我们是想要你成为一名真正的perl程序员。... 目录 前言. 第1章简介 问题与答案 “perl”这个词是什么意思? 如何取得perl? 我该怎么编写perl程序? 走马观花 习题 第二章标量数据 数字 字符串 perl内建警告信息 标量变量 用print输出结果 if控制结构 获取用户输入 chomp操作符 while控制结构 习题 第三章列表与数组 .访问数组中的元素 特殊的数组索引值 列表直接量 列表的赋值 字符串中的数组内插 foreach控制结构 标量上下文与列表上下文 列表上下文中的(stdin) 习题 第四章子程序 定义子程序 调用子程序 返回值 参数 子程序中的私有变量 长度可变的参数列表 关于词法(my)变量 use strict编译命令 return操作符 非标量返回值 持久性私有变量 习题 第五章输入与输出 取标准输入 钻石操作符输入 调用参数 输出到标准输出 使用printf格式化输出 文件句柄 打开文件句柄 用die处理严重错误 使用文件句柄 复用标准文件句柄 使用say来输出 习题 第六章哈希 什么是哈希? 访问哈希元素 哈希函数 哈希的典型应用 %env哈希 习题 第七章漫游正则表达式王国 什么是正则表达式? 使用简易模式 字符集 习题 第八章以正则表达式进行匹配 以m//进行匹配 可选修饰符 锚位 绑定操作符=~ 模式串中的内插.. 捕获变量 通用量词 优先级 模式测试程序 习题 第九章用正则表达式处理文本 用s///替换 可选修饰符 split操作符 join函数 列表上下文中的m// 更强大的正则表达式 习题 第十章其他控制结构 unless控制结构 until控制结构 条件修饰词 裸块控制结构 elsif子句 自增和自减 for控制结构 循环控制 三目操作符?: 逻辑操作符 习题 第十一章perl模块 寻找模块 安装模块 使用简单模块 习题 第十二章文件测试 文件测试操作符 localtime函数 按位运算操作符 习题 第十三章目标操作 在目录树中移动 文件名通配 文件名通配的另一种语法 目录句柄 递归的目录列表 操作文件与目录 删除文件 重命名文件 链接与文件 建立及移除目录 修改权限 更改隶属关系 修改时间戳 习题 第十四章字符串与排序 在字符串内用index搜索 用substr处理子串 高级排序 习题 第十五章智能匹配与given-when结构 智能匹配操作符 智能匹配操作的优先级 given语句 多个项目的when匹配 习题 第十六章进程管理 system函数 exec函数 环境变量 用反引号捕获输出结果 将进程视为文件句柄 用fork开展地下工作 发送及接收信号 习题 第十七章高级perl技巧 用eval捕获错误 用grep来筛选列表 用map对列表进行转换 不带引号的哈希键 切片 习题 附录a习题解答 附录b超越小骆驼...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随行之旅

python国产化自动化

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值