基本操作

  • 帮助文档:?函数。演示:demo(函数)。参数列表:formals(函数),返回为成对列表pairlist。
  • 用all.equal函数检查浮点数是否相等,容忍度默认为1.5e-8,如果相等返回TRUE,不相等返回差值。将其嵌入isTRUE函数则返回TRUE或者FALSE
  • 使用<<-对全局变量赋值,或者使用assign函数,参数:“变量名”,值,如果全局赋值加上globalenv()参数。assign函数高级用法,需少用。
  • 一般直接输入变量名就会输出结果,是为隐式调用print函数,从linux终端运行等需要加上print函数。
  • 特殊数字:Inf,-Inf,NaN,NA。NaN(not a number),NA(not available)代表缺失值。is.finite函数检查特殊数字,正常数字返回TRUE,is.infinite函数相反。is.nan函数检查NaN,is.na函数检查NA,NaN。
  • 三种逻辑:TRUE,FALSE,NA。any和all函数检查逻辑向量
  • NULL是个特殊值,表示空的变量。NULL没有长度,用is.null来测试,把某个元素设置为NULL为删除,它因此采用list(NULL)来设置。
  • head函数可显示前几行(默认为6行),head('',n)显示前n行。
  • 工作目录:查看getwd(),更改setwd("path")。绝对路径的书写用/书写,windows下可以用\\,为了在各个系统下保持一致,尽量用/间隔
  • 清除工作区的变量
#清除所有变量
rm(list=ls()) #清除单个变量
rm(data) #清除多个变量
rm(list=c('data1','data2'))
  • str函数能显示对象的结构,对数据框和嵌套列表很有用
> str(a)
'data.frame': 13 obs. of 3 variables:
$ class: Factor w/ 7 levels "浜岀彮","涓夌彮",..: 7 6 5 4 3 1 1 1 1 2 ...
$ name : Factor w/ 10 levels "","122","闄堜附鐏\xb5,115",..: 1 2 1 1 2 8 7 6 5 4 ...
$ score: int NA NA NA NA NA 119 96 NA NA NA ...
  • attributes函数能显示当前对象的所有属性列表
> attributes(a)
$names
[1] "class" "name" "score" $class
[1] "data.frame" $row.names
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13

 


生成数据

  • vector函数构建一个指定类型和长度的矢量,结果可以为0,FALSE,空字符串
> vector('numeric',5)#numeric(5)
[1] 0 0 0 0 0
> vector('logical',5)#logical(5)
[1] FALSE FALSE FALSE FALSE FALSE
> vector('character',5)#character(5)
[1] "" "" "" "" ""
> vector('list',2)
[[1]]
NULL [[2]]
NULL
  • summary数据汇总:最小值,1/4值,中指,3/4值,最大值。对数据框使用summary函数,相当于对每一列使用summary函数。
  • letters包含a到z的小写值,LETTERS对应大写字母。
> letters[4]
[1] "d"
> letters[1:4]
[1] "a" "b" "c" "d"
> letters[]
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l"
[13] "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x"
[25] "y" "z"
  • month.name包含月份的名字,month.abb是月份的缩写。同letters用法一样
  • 常用随机数函数:runif均匀分布,rnorm正态分布  
#runif(n,min,max),默认产生0-1之间的随机数
> runif(3)
[1] 0.3308360 0.5573855 0.9720616
> runif(3,min=1,max=9)
[1] 8.946071 4.915268 5.763918
#rnom可指定参数mean:平均数,sd:标准差,默认mean=0,sd=1
> rnorm(5)
[1] 0.55080064 -0.24792330 -0.09480838 0.65215600
[5] -0.96422061
> rnorm(5,mean=2,sd=0.3)
[1] 2.373522 2.176204 1.948216 2.371155 2.070872
  • sample函数为数据抽样,三个参数:数据,抽取个数,replace(TRUE是有放回的抽取,FALSE相反)
  • seq函数产生序列:seq.int函数、seq_len函数、seq_along函数
#seq.int创建一个序列,与冒号有所不同,指定步长时也不一样
> 2:8
[1] 2 3 4 5 6 7 8
> seq.int(2:8)
[1] 1 2 3 4 5 6 7
> seq.int(4,10,3)#指定步长3
[1] 4 7 10
#seq_len函数创建一个从1到它的输入值的序列,输入为0时创建一个空值
> seq_len(0)
integer(0)
> attributes(seq_len(0))
NULL
#seq_along创建一个从1开始、长度为其输入值的序列
> seq_along(letters[1:10])
[1] 1 2 3 4 5 6 7 8 9 10
  • rep函数:重复使用元素创建矢量
#整体重复三遍
> rep(1:5,3)
[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
#每个元素重复三遍
> rep(1:5,each=3)
[1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
#每个元素重复个数:1:5
> rep(1:5,times=1:5)
[1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
#重复矢量直到达到15的长度
> rep(1:5,length.out=15)
[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
  • 生成矩阵和数组array和matrix函数
#array创建数组,另个参数:值,维度dim
> array(1:12,dim=c(3,4))
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
#matrix创建矩阵,需要指定行数或者列数,默认输入的值按照列填充,或者指定参数byrow=TRUE按行填充
> matrix(1:12,nrow=3)
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> matrix(1:12,nrow=3,byrow=TRUE)
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12

  


向量,矩阵和数组

1.length函数

> length(1:5)
[1] 5
#缺失值NA也被计入长度
> length(c(TRUE,FALSE,NA))
[1] 3
#返回字符串的数目
> length(c('A','B','C'))
[1] 3
#若想返回每个字符串中字符的长度用nchar
> nchar(c('Axc','Bcdsfs','Cdsss'))
[1] 3 6 5

若用于矩阵和数组则返回所有维度的乘积

2.命名name

可以在创建数据时指定名称,也可以在事后命名。

#kiwi fruit用引号括起来了,因为其名称无效:有空格
#可以忽略其他元素命名
> c(apple=1,"kiwi fruit"=2,3)
apple kiwi fruit
1 2 3
> x <- 1:3
> names(x) <- c("apple","kiwi fruit",'')
> x
apple kiwi fruit
1 2 3
#names函数返回名称,若没有一个元素有名字则返回NULL
> names(x)
[1] "apple" "kiwi fruit" ""
> names(1:4)
NULL
#创建数组时命名,矩阵同样
> x <- array(1:6,dim=c(2,3),dimnames=list(c("one","tow"),c("ein","zwei","drei")))
> x
ein zwei drei
one 1 3 5
tow 2 4 6 #rownames、colnames和dimnames函数
> rownames(x)
[1] "one" "tow"
> colnames(x)
[1] "ein" "zwei" "drei"
> dimnames(x)
[[1]]
[1] "one" "tow" [[2]]
[1] "ein" "zwei" "drei"

3.行、列和维度

dim函数对于数组和矩阵返回所有维度。nrow和ncol函数分别返回行和列。norm、ncol和dim用于向量时返回NULL。NROW和NCOL函数把向量看做列向量

4.合并矩阵

c函数拼接矩阵把他们转换成向量,cbind和rbind分别按col列和row行合并矩阵

> x <- matrix(1:12,nrow=3);x
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> y <- matrix(13:24,nrow=3);y
[,1] [,2] [,3] [,4]
[1,] 13 16 19 22
[2,] 14 17 20 23
[3,] 15 18 21 24
> c(x,y)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
[17] 17 18 19 20 21 22 23 24
> cbind(x,y)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 4 7 10 13 16 19 22
[2,] 2 5 8 11 14 17 20 23
[3,] 3 6 9 12 15 18 21 24
> rbind(x,y)
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
[4,] 13 16 19 22
[5,] 14 17 20 23
[6,] 15 18 21 24

5.数学运算

除法/,转置t函数,点乘%*%和外乘%o%。solve矩阵求反

向量内乘
> 1:3%*%2:4
[,1]
[1,] 20
#向量外乘
> 1:3%o%2:4
[,1] [,2] [,3]
[1,] 2 3 4
[2,] 4 6 8
[3,] 6 9 12
> x<-matrix(1:6,nrow=2);x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> y<-matrix(1:6,nrow=3);y
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
#矩阵相乘
> x%*%y
[,1] [,2]
[1,] 22 49
[2,] 28 64
> x<-matrix(runif(9),nrow=3);x
[,1] [,2] [,3]
[1,] 0.6136448 0.05304645 0.7378249
[2,] 0.1922476 0.18177634 0.9545918
[3,] 0.9050422 0.65400112 0.2954112
#矩阵求逆
> solve(x)
[,1] [,2] [,3]
[1,] 1.6984882 -1.389698 0.2484943
[2,] -2.4026083 1.448092 1.3214365
[3,] 0.1154494 1.051693 -0.3016769
#矩阵转置
> t(x)
[,1] [,2] [,3]
[1,] 0.98387863 0.6292973 0.03753178
[2,] 0.09061386 0.5971163 0.10537436
[3,] 0.80727162 0.5403768 0.55767250

  

Learning R笔记(一)的更多相关文章

  1. Deep Learning论文笔记之(一)K-means特征学习

    Deep Learning论文笔记之(一)K-means特征学习 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感 ...

  2. Spectral Norm Regularization for Improving the Generalizability of Deep Learning论文笔记

    Spectral Norm Regularization for Improving the Generalizability of Deep Learning论文笔记 2018年12月03日 00: ...

  3. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

    Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文, ...

  4. Learning Scrapy笔记(六)- Scrapy处理JSON API和AJAX页面

    摘要:介绍了使用Scrapy处理JSON API和AJAX页面的方法 有时候,你会发现你要爬取的页面并不存在HTML源码,譬如,在浏览器打开http://localhost:9312/static/, ...

  5. Learning Scrapy笔记(零) - 前言

    我已经使用了scrapy有半年之多,但是却一直都感觉没有入门,网上关于scrapy的文章简直少得可怜,而官网上的文档(http://doc.scrapy.org/en/1.0/index.html)对 ...

  6. Deep Learning论文笔记之(八)Deep Learning最新综述

    Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...

  7. Deep Learning论文笔记之(六)Multi-Stage多级架构分析

    Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些 ...

  8. R笔记(1):formula和Formula

    #####开一个新的系列.关于R的一些笔记,就是遇到过的一些问题的简单整理.可能很基本,也可能没什么大的用处,作为一个记录而已.------------------------------------ ...

  9. [Machine Learning]学习笔记-Logistic Regression

    [Machine Learning]学习笔记-Logistic Regression 模型-二分类任务 Logistic regression,亦称logtic regression,翻译为" ...

随机推荐

  1. cmd 运行jar文件

    将java工程打成jar包,但第三方jar包并没有包含在包中,当在命令行中运行jar包时,出现类找不到的异常, 在网上看到解决办法是将第三方jar包放到JDK的扩展类文件夹中(%JAVA_HOME%/ ...

  2. 【IO】- 关于ByteBuffer的一点认识

    我们经常使用ByteBuffer. 通俗的Non-DerictedByteBuffer结构如下 HeapByteBuffer extends ByteBuffer { Byte[] array; in ...

  3. matlab 保存图片的几种方式

    最近在写毕业论文, 需要保存一些高分辨率的图片. 下面介绍几种MATLAB保存图片的 方式. 一. 直接使用MATLAB的保存按键来保存成各种格式的图片 你可以选择保存成各种格式的图片,  实际上对于 ...

  4. Python(异常处理)

    一 错误和异常 程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) 2.逻辑错误(逻辑错误) 什么是异常 异常就是程序运行时发 ...

  5. contentSize、contentInset和contentOffset 是 scrollView三个基本的属性区别和使用

    contentSize.contentInset和contentOffset 是 scrollView三个基本的属性. contentSize: 其实就是scrollview可以滚动的区域,比如fra ...

  6. Java基础知识陷阱(六)

    本文发表于本人博客. 上次说了下equals跟==的问题,今天再来认识一下这个equals()跟hasCode().上次的代码如下: class Person{ public String name; ...

  7. 2016-2017 National Taiwan University World Final Team Selection Contest J - Zero Game

    题目: You are given one string S consisting of only '0' and '1'. You are bored, so you start to play w ...

  8. spark examples 导入idea并测试

    记录下自己使用idea导入spark examples项目的过程. spark examples 项目可以给我们提供很多有益的参考,经常看看这些代码有助于提高我们写scala代码的水平. 只导入spa ...

  9. Selenium(Webdriver)自动化测试常问到的问题解答(转自:潜龙0318)

    今天朋友问我了几个关于Selenium自动化测试的问题,我看了一下感觉还比较典型.结合我以往自动化测试的经验,给出了一些儿粗浅的答案,希望能帮大家,如果大家有什么好的看法,希望相互交流,相互学习! ( ...

  10. 20145303 《Java程序设计》第六周学习总结

    20145303 <Java程序设计>第六周学习总结 教材学习内容总结 第十章:输入/输出 (InputStream与OutputStream) 1.Java将输入/输出抽象化为串流,数据 ...