R语言自学笔记-3设置路径、R包操作

Python011

R语言自学笔记-3设置路径、R包操作,第1张

#设置默认路径

#显示当前工作目录(软件默认使用工作目录)

getwd()

#修改默认工作目录

setwd(dir = "e:/Rwork/")

#提示工作目录

getwd()

#查看目录下包含的文件

list.files()

#或者

dir()

#R包安装

install.packages("vcd")

#显示库所在的位置

.libPaths()

#显示库里有哪些安装包

library()

#载入包

library(vcd)

#or

require(vcd)

#直接输入函数看某些函数来自于R的哪个包

#如何使用R包

help(package="vcd")

help(package="ggplot2")

#查看包的信息,列出R包的基础内容,显示内置的数据集的内容,给包中的函数作为案例来使用

library(help="vcd")

#还有一些包中的函数,是包的核心内容,扩展了R的功能

Arthritis

#列出包中所有包含的函数

ls("package:vcd")

#每个函数如何使用查看对应帮助文档

#列出R包中包含的所有数据集

data(package="vcd")

#使用完一个包之后,将包从内存中移除

detach("package:vcd")

#再使用

Arthritis

#会出现报错:需要重新再加载

#删除已安装的包

remove.packages("vcd")

#会将R包从硬盘上彻底删除,无法继续使用了,用得不多

#R包的批量移植(更换新设备)

#列出当前环境中已安装的R包

installed.packages()

#取第一列,,,使用下标来访问数据框的第一列

installed.packages()[,1]

#将所以R包名字保存到一个文件中

Rpack<- installed.packages()[,1]

save(Rpack,file = "Rpack.Rwork")

#将这个文件移到另一个设备上

#在另一个设备上使用load函数打开这个文件

#存到另外一个变量Rpack中

#看到这些R包

#Rpack

#批量安装这些R包

#使用一个for循环

for(i in Rpack)install.packages(i)

#如何获取R的帮助信息

help.start()

#查看某个函数的功能

help(sum)

#or

?plot

?sum

#快速了解函数参数而不想查阅详细文档

args(plot)

#查看函数使用案例

example(mean)

example("hist")

#列出R的一些案例图

demo(graphics)

#查看R安装的某个包的帮助文档

help(package=ggplot2)

#有些R包包含vignette文档,这中文档包含更多内容,也更加规范,里面有简介、教程、开发文档等

vignette()

#不是每个包都包含这种格式的文档

vignette("xts")

#有时安装了某包但使用help命令搜索不到相关函数,是因为没有载入这个包

#需用使用library函数载入这个包

#载入之后才能使用help函数找到相关文档

#或者直接在help命令中加上package选项  等于  要搜索R包的名字,这种方法比较麻烦

#??接要搜索函数名字,这种情况下不加载包也可以

#有些情况下,不知道具体的函数名,只能模糊搜索

#查找与绘制热图相关的帮助信息(使用这条命令进行本地搜索)

help.search(heatmap)

#提示搜索不到

#因为需要加上引号

help.search("heatmap")

#搜到stats包中的heatmap函数,可以用来绘制热图

#help.search("heatmap")也可以简写成下面一条命令

??heatmap#不需要加引号

#列出所有包含关键字的内容

apropos("sum")

#可以通过mod参数调整查询的内容

apropos("sum",mod="function")#只列出函数

#help.search或??都是进行本地的文档搜索

#有时搜索不到或者文档太老了可以使用RSiteSearch()函数进行网络搜索

RSiteSearch(matlab)

#运行函数会使用默认浏览器来访问R官网,在官网中进行搜索,列出更多的结果

#可以利用搜索引擎进行问题搜索

R语言特征:

1. type.convert()函数主要用在read.table()函数中,返回向量和因子类型,当输入为double型时会丢失精度。

>type.convert(c('abc','bcd')) # 返回因子类型

[1] abc bcd

Levels: abc bcd

>type.convert(c(as.double(1.12121221111),'1.121')) # double型丢失精度

[1] 1.121212 1.121000

2. 如果一个文件包含有小数位的数据,通过read.table()函数读取时,会指定为numeric类型。

新建一个文件num.csv包括小数

1,2,1.11

2.1,3,4.5

用read.table读取文件,并查看列的类型。

>num<-read.table(file="num.csv",sep=",") # 读文件

>num

V1 V2 V3

1 1.0 2 1.11

2 2.1 3 4.50

>class(num)

[1] "data.frame"

>class(num$V1)# 查看列的类型为numeric

[1] "numeric"

3. tools包用Rdiff()函数的参数useDiff为FALSE时,与POSIX系统的diff -b命令类似。

新建文件num2.csv

3,2,1.11

2.1,3,4.5

用Rdiff()比较两个文件num.csv和num2.csv。

>Rdiff('num.csv','num2.csv',useDiff = FALSE)

1c1

<1,2,1.11

---

>3,2,1.11

[1] 1

4. 新函数anyNA(),结果与 any(is.na(.))一致,性能更好。

>is.na(c(1, NA))

[1] FALSE TRUE

>any(is.na(c(1, NA)))

[1] TRUE

>anyNA(c(1, NA))

[1] TRUE

5. arrayInd()和which()函数增加useNames参数,用于列名的匹配。我在测试过程,不太理解这个参数的意义。

>which

function (x, arr.ind = FALSE, useNames = TRUE)

6. is.unsorted()函数支持处理原始数据的向量。

>is.unsorted(1:10) # 排序的向量

[1] FALSE

>is.unsorted(sample(1:10)) # 无序的向量

[1] TRUE

7. 用于处理table的as.data.frame()函数和as.data.frame.table()函数,支持向provideDimnames(sep,base)函数传参数。我在测试过程中,也不理解具体是什么更新。

8. uniroot()函数增加新的可选参数extendInt,允许自动扩展取值范围,并增加返回对象参数init.it。

>f1 <- function(x) (121 - x^2)/(x^2+1) # 函数f1

>f2 <- function(x) exp(-x)*(x - 12) # 函数f2

>try(uniroot(f1, c(0,10))) # 在(0,10)的区间求f1函数的根

Error in uniroot(f1, c(0, 10)) :

f() values at end points not of opposite sign

>try(uniroot(f2, c(0, 2))) # 在(0,2)的区间求f2函数的根

Error in uniroot(f2, c(0, 2)) :

f() values at end points not of opposite sign

>str(uniroot(f1, c(0,10),extendInt="yes")) # 通过extendInt参数扩大取值搜索范围

List of 5

$ root : num 11

$ f.root: num -3.63e-06

$ iter : int 12

$ init.it : int 4

$ estim.prec: num 6.1e-05

>str(uniroot(f2, c(0,2), extendInt="yes")) # 通过extendInt参数扩大取值搜索范围

List of 5

$ root : num 12

$ f.root: num 4.18e-11

$ iter : int 23

$ init.it : int 9

$ estim.prec: num 6.1e-05

9. switch(f,)函数,当参数f是因子类型时,会出警告提示,需要转换字符串参数。

>switch(ff[1], A = "I am A", B="Bb..", C=" is C")# ->"A" # 警告提示

[1] "I am A"

Warning message:

In switch(ff[1], A = "I am A", B = "Bb..", C = " is C") :

EXPR is a "factor", treated as integer.

Consider using 'switch(as.character( * ), ...)' instead.

>switch(as.character(ff[1]), A = "I am A", B="Bb..", C=" is C") # 转型为字符串处理

[1] " is C"

10. 解析器已经更新,使用更少的内存。