1.      下载文件

有一个包叫downloader,使用这个包的函数 download可以正确下载文件,而且,download和download.file参数是一致。

install.packages("downloader")

library(downloader)

furl <-"https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv"

download(url=furl,destfile="./asc.csv")

2.       rvest包网络数据抓取示例:安徽各市区PM2.5监测站数量

library(rvest)

url ="http://www.aepb.gov.cn/Pages/Aepb14_SJZX.aspx"

anhui = url %>% html() %>%html_nodes("table") %>% .[[10]] %>% html_table()

city = anhui[1]

a = url %>% html() %>%html_nodes("table tbody a") %>% html_attrs()

a = as.character(a)

b =paste("http://www.aepb.gov.cn/Pages/",a,sep = "")

myfun = function(x) b[x] %>% html() %>%html_nodes("table") %>% .[[10]] %>% html_table(fill = T) %>%nrow()

site = sapply(1:length(b),myfun)

data = data.frame(城市 = city,监测站数量 =site)

data

城市监测站数量

1    合肥        10

2    淮北         3

3    亳州         2

4    宿州         3

5    蚌埠         6

6    阜阳         3

7    淮南         6

8    滁州         3

9    六安         4

10 马鞍山          5

11   芜湖         4

12   宣城         3

13   铜陵         6

14   池州         3

15   安庆         4

16   黄山         3

3.      在坐标轴上显示百分比

x=1:10

y=1:10

plot(x,y,axes=F)

z=numeric(length(y))

z[1]=y[1]

for(i in 2:length(y))

z[i]=(z[i-1]+y[i])

z=z/sum(y)

z=z*100

f=round(z);

f

axis(1)

axis(2,1:length(y),paste(f,'%',sep=''))

box()

4.      字符串格式化函数sprintf()

函数使用方法与C语言相同

> sprintf("%f", pi)

[1] "3.141593"

> sprintf("%.3f", pi)

[1] "3.142"

> sprintf("%1.0f", pi)

[1] "3"

> sprintf("%5.1f", pi)

[1] " 3.1"

> sprintf("%05.1f", pi)

[1] "003.1"

> sprintf("%+f", pi)

[1] "+3.141593"

> sprintf("% f", pi)

[1] " 3.141593"

> sprintf("%-10f", pi) # leftjustified

[1] "3.141593  "

> sprintf("%e", pi)

[1] "3.141593e+00"

> sprintf("%E", pi)

[1] "3.141593E+00"

> sprintf("%g", pi)

[1] "3.14159"

> sprintf("%g",   1e6 * pi) # -> exponential

[1] "3.14159e+06"

> sprintf("%.9g", 1e6 * pi) #-> "fixed"

[1] "3141592.65"

> sprintf("%G", 1e-6 * pi)

[1] "3.14159E-06"

5.       抓网页伪装浏览器header

#抓取信息

library(RCurl)

library(XML)

#伪装报头

myheader=c(

"User-Agent"="Mozilla/5.0(Windows;U;WindowsNT 5.1;zh-CN;rv:1.9.1.6",

"Accept"="text/htmal,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",

"Accept-Language"="en-us",

"Connection"="keep-alive",

"Accept-Charset"="GB2312,utf-8;q=0.7,*;q=0.7"

)

#测试单个url下的信息读取

testurl<-"http://www.fruitday.com/web/product_list/40"

temp<-getURL(testurl,httpheader=myheader,encoding="UTF-8")

k<-htmlParse(temp)  #解析网页

write.table(k,"k.txt")

#k

name.node<-getNodeSet(k,'//li[@class="cplist-p02"]/a')

style.node<-getNodeSet(k,'//li[@class="cplist-p03"]')

price.node<-getNodeSet(k,'//li[@class="cplist-p04"]')

name.node

style.node

price.node

#price<-xmlValue(price.node1[[1]])

#price

#name.node

#price<-sapply(getNodeSet(k,'//p[@class="price"]/i/text('),xmlValue)

#url.node1

#name<-xmlGetAttr(url.node[[1]],'title')

#name

#name<-xmlGetAttr(url.node1[[1]],'title')

#name

#getNodeSet(k,'//p[@class="title"]/a[@title]')

price<-c()

style<-c()

name<-c()

for (i in 1:200){

name<-xmlValue(name.node[])

style<-xmlValue(style.node[])

price<-xmlValue(price.node[])

#name<-iconv(name,"UTF-8","gbk")#解决中文正常显示问题

}

name<-iconv(name,"UTF-8","gbk")

df<-data.frame(na=name,sty=style,pr=price)

write.table(df,"tt.txt")

6.       判断文件是否为空

file.info("your_file")$size == 0

7.      googleVis包制作地图示例

这是出生儿性别比地图,颜色越深,男婴比例越高,最大的是海南,130:100,最小的是西藏,102:100。这个图是交互式的,鼠标点处停留一下,会显示该省的数据。代码如下:

#用googleVis包的另一种方法,需要能访问google网站,否则无法正常显示

##

provname=c("CN-11","CN-12","CN-13","CN-14","CN-15","CN-21","CN-22","CN-23","CN-31","CN-32","CN-33","CN-34","CN-35","CN-36","CN-37","CN-41","CN-42","CN-43","CN-44","CN-45","CN-46","CN-50","CN-51","CN-52","CN-53","CN-54","CN-61","CN-62","CN-63","CN-64","CN-65");

pop=c(110.56,112.51,113.43,112.52,108.45,112.83,111.23,109.71,110.64,116.51,113.86,127.85,117.93,114.74,112.17,118.46,128.18,126.16,130.30,125.55,135.64,115.13,116.01,107.03,108.71,102.73,122.10,114.82,110.35,108.79,106.12)

##

library(googleVis)

a<-data.frame(provname,pop)

G2 <- gvisGeoChart(a,locationvar='provname',colorvar='pop',options=list(region='CN',displayMode="regions",resolution="provinces",colorAxis="{colors:['yellow','red']}" ))

plot(G2)

省份顺序:

"北京市","天津市","河北省","山西省","内蒙古自治区",  "辽宁省","吉林省","黑龙江省","上海市","江苏省",  "浙江省","安徽省","福建省","江西省","山东省",  "河南省","湖北省","湖南省","广东省",  "广西壮族自治区","海南省","重庆市","四川省","贵州省",  "云南省","西藏自治区","陕西省","甘肃省","青海省",  "宁夏回族自治区","新疆维吾尔自治区"

8.      绘制三维曲面

x <- seq(-10,10, length.out = 50)

y <-x

rotsinc <-function(x,y) {

sinc<- function(x) { y <- sin(x)/x ; y[is.na(y)] <- 1; y }

10 *sinc( sqrt(x^2+y^2) )

}

z <- outer(x,y, rotsinc)

persp(x, y, z)

require(rgl)

surface3d(x, y, z)

9.      利用paste函数合并多个字符串

A <- c(1:10)

> A

[1] 1  2  3 4  5  6 7  8  9 10

> A <-as.array(A)

> A

[1] 1  2  3 4  5  6 7  8  9  10

>paste(A,collapse = '')

[1]"12345678910"

10. 矩阵按列排序

>x<-matrix(c(8,3,9,5,7,3),byrow=FALSE,nrow=3)

> x

[,1] [,2]

[1,]    8   5

[2,]    3   7

[3,]    9   3

>x[order(x[,1]),]

[,1] [,2]

[1,]    3   7

[2,]    8   5

[3,]    9   3

11. 命令行方式运行R程序

通过命令行的方式,可以实现多种效果,比如通过批处理程序定时运行R程序。下面是参数列表:

C:\ProgramFiles\R\R-3.1.2\bin\x64>Rcmd

Usage: Rcmdcommand args

where 'command' isone of:

INSTALL Install add-on packages

REMOVE  Remove add-on packages

SHLIB   Make a DLL for use with dynload

BATCH   Run R in batch mode

build   Build add-on packages

check   Check add-on packages

Rprof   Post process R profiling files

Rdconv  Convert Rd format to various other formats

Rdiff   difference R output files

Rd2pdf  Convert Rd format to PDF

Rd2txt  Convert Rd format to pretty text

Stangle  Extract S/R code from vignette

Sweave   Process vignette documentation

config  Obtain configuration information about R

open    Open a file via Windows file associations

texify  Process a latex file

Use Rcmd command--help

for usageinformation for each command.

比如如下调用,可以执行一个R语言脚本:

C:\ProgramFiles\R\R-3.1.2\bin\x64>Rcmd BATCH C:\data\Assign3_Q1.R

12. 3D饼图

library(plotrix)

pieval=c(14529,4382,1713,1682,1249,1063,868,9660)

pielabels=c("北美云杉","葡萄","蓖麻","毛果杨","小立碗藓","江南卷柏","黑孢块菌","其他")

pie3D(pieval,radius=1,labels=paste(pielabels,pieval,paste(round(100*pieval/sum(pieval),2),"%",sep=""),sep="\n"),explode=0.05, labelcex=0.8,height=0.1,main="针叶树比对到UniRef100数据库的物种分布")

13. 选择文件夹(文件)以及搜索文件夹

utils::choose.dir

Choose a Folder Interactively

utils::choose.files

Choose a List of Files Interactively

list.files(R.home())

## Only filesstarting with a-l or r

## Note that a-lis locale-dependent, but using case-insensitive

## matching makesit unambiguous in English locales

dir("../..",pattern = "^[a-lr]", full.names = TRUE, ignore.case = TRUE)

list.dirs(R.home("doc"))

list.dirs(R.home("doc"),full.names = FALSE)

file.choose()  /*chooseonly one file*/

choose.files()/*choose one or more files*/

choose.dir()/*choose one directory*/

若设置以下参数,则可以遍历所有的子文件夹

list.files(recursive=TRUE)

14. mean函数中trim的意义

mean(x, trim =0.1)

就是先把x的最大的10%的数和最小的10%的数去掉,然后剩下的数算平均。

15. melt()函数的作用

melt 是溶解/分解的意思,即拆分数据。

reshape/reshape2 的 melt函数是个 S3通用函数,它会根据数据类型(数据框,数组或列表)选择 melt.data.frame,melt.array或 melt.list函数进行实际操作。

1. 如果是数组(array)类型,melt的用法就很简单,它依次对各维度的名称进行组合将数据进行线性/向量化。如果数组有 n 维,那么得到的结果共有 n+1列,前 n列记录数组的位置信息,最后一列才是观测值。

> datax <-array(1:8, dim=c(2,2,2))

> melt(datax)

Var1Var2 Var3 value

1    1    1    1    1

2    2    1    1    2

3    1    2    1    3

4    2    2    1    4

5    1    1    2    5

6    2    1    2    6

7    1    2    2    7

8    2    2    2    8

> melt(datax,varnames=LETTERS[24:26],value.name="Val")

X Y Z Val

1 1 1 1   1

2 2 1 1   2

3 1 2 1   3

4 2 2 1   4

5 1 1 2   5

6 2 1 2   6

7 1 2 2   7

8 2 2 2   8

2. 如果是列表数据,melt函数将列表中的数据拉成两列,一列记录列表元素的值,另一列记录列表元素的名称;如果列表中的元素是列表,则增加列变量存储元素名称。元素值排列在前,名称在后,越是顶级的列表元素名称越靠后:

> datax <-list(agi="AT1G10000", GO=c("GO:1010","GO:2020"),KEGG=c("0100", "0200", "0300"))

> melt(datax)

value   L1

1 AT1G10000  agi

2   GO:1010   GO

3   GO:2020   GO

4      0100 KEGG

5      0200 KEGG

6      0300 KEGG

>melt(list(at_0100=datax))

value   L2     L1

1 AT1G10000  agi at_0100

2   GO:1010   GO at_0100

3   GO:2020   GO at_0100

4      0100 KEGG at_0100

5      0200 KEGG at_0100

6      0300 KEGG at_0100

3. 如果数据是数据框类型,melt的参数就稍微复杂些:

> melt(data,id.vars, measure.vars, variable.name = "variable", ..., na.rm =FALSE, value.name = "value")

其中 id.vars是被当做维度的列变量,每个变量在结果中占一列;measure.vars是被当成观测值的列变量,它们的列变量名称和值分别组成 variable和 value两列,列变量名称用variable.name和 value.name来指定。

R语言基础编程技巧汇编 - 13相关推荐

  1. R语言基础编程技巧汇编 - 20

    1.      RCurl设置代理 假设代理地址是10.10.10.10:端口是:8080. 设置代理地址如下: curl<-getCurlHandle(proxy="10.10.10 ...

  2. 数据分析必备:掌握这个R语言基础包1%的功能让你事半功倍!(附代码)

    来源:大数据 本文约7100字,建议阅读15分钟. 本文介绍了utils包在R语言基础的用途. [ 导读 ]无论数据分析的目的是什么,将数据导入R中的过程都是不可或缺的.毕竟巧妇难为无米之炊.util ...

  3. r语言 新增一列数字类型_R语言实战之R语言基础语法精讲(一)

    R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具.在学习R数据科学之前,我们首先要对R语言的基础语法有一个良好的了 ...

  4. r语言各形状编号_190+张图片!吐血整理!搞定R语言基础绘图全部知识点

    转自:生信宝典|Bio_Data,不一样的生信学习平台 原文链接:ggplot2高效实用指南 (可视化脚本.工具.套路.配色) 作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语 ...

  5. n1 c语言程序,C语言基础编程练习

    <C语言基础编程练习>由会员分享,可在线阅读,更多相关<C语言基础编程练习(94页珍藏版)>请在人人文库网上搜索. 1.1.屏幕上输入:This is a C program# ...

  6. java语言编程基础王晓华_Java语言基础编程练习

    Java语言基础编程练习 1. 运算符练习 提示用户输入正整数类型的秒数,拆分秒数后输出x小时x分x秒. 如:输入7199,输出1小时59分59秒 System.out.println("请 ...

  7. %3c- r语言运算符,R语言基础教程之运算符

    原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...

  8. R语言基础学习记录4:重要函数

    时间: 2018-07-18(学习) 2018-07-22(学习记录) 教程:慕课网 <R语言基础> 讲师:Angelayuan 补充内容: R语言常用函数总结大全.gl()函数 学习内容 ...

  9. R语言基础指令和并行算法初识(上篇)

    一.R语言背景介绍 二. R语言基础指令 三. R语言并行算法 四. 计划打算 一.R语言背景介绍 1.2.起源:R是统计领域广泛使用的诞生于1980年左右的S语言的一个分支.可以认为R是S语言的一种 ...

最新文章

  1. java与scala的区别 个位数以内的 就喜欢作者这么言简意赅的
  2. amazon mws api 获取所有产品_Amazon’s Choice是什么?Amazon's Choice标签全解读
  3. case when影响性能吗_端子台的性能受航空插头插针插孔的影响吗?
  4. CSS3详解:background
  5. python白森_氧气恋人
  6. Spring IOC容器组件注入的几种方式
  7. 满满的干货!mysql技术介绍
  8. Vue.js 第二天: 事件处理
  9. SAP中计划策略的后台配置框架分析解读
  10. Python爬虫实现isbn查询豆瓣书籍详细信息
  11. 有学生表Student, 课程表Course, 学生选课表StudentCourse
  12. 利用计算机打字教学设计,四年级全一册信息技术教案-第1课正确的坐姿和指法--基本键打字练习 河大版...
  13. LiveZilla-最好的免费在线客服
  14. java lda主题模型_主题模型(一):LDA 基本原理
  15. 我的世界服务器加入游戏显示指令,我的世界服务器最新指令大全 我的世界服务器指令...
  16. Java-实现飞机躲子弹游戏
  17. mfc editctrl限制输入
  18. USB device hot plug detection
  19. idea实用与炫酷的插件推荐
  20. 腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】

热门文章

  1. Linux文件系统层级结构图和vim中三个模式的命令
  2. BAT机器学习面试1000道
  3. 2020年书法落款_散文书法落款-2020年书法落款怎么写?
  4. Saber 能量激光描边光效插件
  5. linux deploy安装kali和磁盘扩容
  6. Playbooks 简介
  7. Java定时任务处理异常空指针,执行定时器报空指针异常
  8. 中秋节的特别礼物----属于程序员的专有浪漫
  9. 多径效应和多普勒效应
  10. 【noip模拟题】天神下凡(贪心)