R语言基础--包的操作与内置数据集

R语言包的安装

参考文章

在R中大概有几种包的安装方式。

install.packages()常规包的安装

括号里面包的名称要加英文引号,在列出的CRAN镜像站点列表中选择一个进行下载,例如

install.packages(“ggplot2”)

安装包的时候可以切换安装源,如下所示:

install.packages(pkgs, lib, repos = getOption("repos"),
    contriburl = contrib.url(repos, type),
    method, available = NULL, destdir = NULL,
    dependencies = NA, type = getOption("pkgType"),
    configure.args = getOption("configure.args"),
    configure.vars = getOption("configure.vars"),
    clean = FALSE, Ncpus = getOption("Ncpus", 1L),
    verbose = getOption("verbose"),
    libs_only = FALSE, INSTALL_opts, quiet = FALSE,
    keep_outputs = FALSE, ...)

使用格式为:

install.packages("ABC",repos="http://mirror.bjtu.edu.cn/ ")

使用devtools从Github上安装包

如果是要从GitHub上安装包,需要先安装devtools,如下所示:

install.packages("devtools")
install_github("genomicsclass/dagdata")

其它的包安装命令,如下所示:

install.packages("installr")   # 下载并安装 installr 包
library(installr)              # 装载 installr 包
install.RStudio()              # 下载并安装 RStudio IDE
install.Rtools()               # 你需要 Rtools 来构建自己的包
install.git()                  #git 提供了代码的版本控制功能

如果要想把R包安装到其他位置,可以使用以下代码:

install.packages( 
  c("xts", "zoo"),
  lib = "some/other/folder/to/install/to", 
  repos = "http://www.stats.bris.ac.uk/R/")

其中lib参数就是安装的包的位置,repos就是安装源。

通过BiocLite来安装生信工具

生信很多工具是在bioconductor上,因此需要biocLite,由于R版本升级,现在安装都是BiocManager::install()
此处仍然列出,如下所示:

#source("https://bioconductor.org/biocLite.R")
#options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
# 使用相应的镜像

#biocLite(c("ALL","CLL", "pasilla", "airway")) #数据包
#biocLite(c("limma","DESeq2", "clusterProfiler")) #软件包

通过BiocManager来安装生信工具

在使用bioconductor时由于需要在线连接才能安装包,现在很多已经使用BiocManager的方式来安装,安装代码如下所示:

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("ballgown", version = "3.8")

批量下载并且加载R包

list.of.packages <- c("xx", "yy") # replace xx and yy with package names
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)
lapply(new.packages, require, character.only=T)

使用if语句安装并加载包

通过if语句,可以判断某个包是否存在,如果不存在,就先下载,后加载,如下所示:

#另外可以检测某个包是否存在,只有不存在时才会安装
if (! require ('reshape2')){
    install.package("reshape2")
    library(reshape2)
}

如果是bioconductor上的包,也可以按以下方式进行安装:

if (! require ('CLL')){
    options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
    BiocInstaller::biocLite('CLL',ask = F, suppressUpdates = T)
}

包的加载

包的载入函数为library()require(),安装完包后,需要加载才能使用其中的函数,此时括号中不使用引号。两者的不同之处在于library()载入之后不返回任何信息,而require()载入后则会返回TRUE,因此require()适合用于程序的书写。

library(ggplot2)

require(foreign)

Loading required package: foreign

如果想不加载包就使用其中的函数,则需要使用双冒号,即::,看一个案例:

x <- rnorm(1000)
skewness(x)

运行结果如下所示:

skewness(x)
Error in skewness(x) : could not find function "skewness"

结果显示,没有skewness这个函数,因为这个函数是moments包中的函数,没有加载这个包,就无法使用这个函数。现在我们在没有加载这个包的情况下,使用双冒号来看一下:

moments::skewness(x) 

[1] -0.01674

再用library()来使用一下:

library(moments)
skewness(x)

[1] -0.01674

使用双冒号这种方式在一种情况下比较适合。

这种情况就是:假设我们同时加载了A包与B包,A包中有一个名为a()的函数,B包中也有一个名为a()的函数。此时,如果先导入A包,再导入B包,B包中的a()函数就会屏蔽A包中的a()函数,也就是说,这两个同名函数就会出现冲突。

因此为了避免出现这种情况,可以不加载A包,也不加载B包,而是将它们的同名函数提取出来,如下所示:

fun1 <- A::a

fun2 <- B::a

如果你此时已经恰好载入一个包,想要解决绑定,就可以使用unloadNamespace()函数即可,例如:

unloadNamespace("moments")

查看一个包的帮助

help(package="base")

卸载包

detach(),这是library()的反向操作,此操作主要是为了避免某些包中的函数名称相同,造成冲突,注意与library()的参数不同,detach()参数为detach(package:包的名称),library(包的名称),例如:

library(ggplot2) #加载包
(.packages()) #列出当前已经加载的包

 [1] "foreign"   "ggplot2"   "stats"     "graphics"  "grDevices" "utils"    

 [7] "datasets"  "methods"   "base"

detach(package:ggplot2)  #卸载ggplot2包

(.packages()) #列出当前已经加载的包

 [1] "foreign"   "stats"     "graphics"  "grDevices" "utils"     "datasets" 

 [7] "methods"   "base"

删除包remove.packages()

使用条件:R语言自带的install.packages()函数来安装一个包时,都是默认安装最新版的。 但是有些R包的开发者他会引用其它的一些R包,但是它用的是旧版本的功能,自己来不及更新或者疏忽了。 而我们又不得不用他的包,这时候就不得不卸载最新版包,转而安装旧版本包。

查询加载的包

search()

search()

 [1] ".GlobalEnv"        "package:stats"     "package:graphics" 

 [4] "package:grDevices" "package:utils"     "package:datasets" 

 [7] "package:methods"   "Autoloads"         "package:base"

.libPaths()能够显示库所在的位置

.libPaths()

 [1] "C:/Users/Cloud/Documents/R/win-library/3.1"

 [2] "C:/Program Files/R/R-3.1.3/library"

library()显示库中有哪些包

library()
backports               Reimplementations of Functions Introduced Since
                        R-3.0.0
base64enc               Tools for base64 encoding
bitops                  Bitwise Operations
bookdown                Authoring Books and Technical Documents with R
                        Markdown
caTools                 Tools: moving window statistics, GIF, Base64,
                        ROC AUC, etc.
cellranger              Translate Spreadsheet Cell Ranges to Rows and
                        Columns
digest                  Create Compact Hash Digests of R Objects
evaluate                Parsing and Evaluation Tools that Provide More
                        Details than the Default

查看已经安装的包

函数installed.packages()

如下所示:

还可以这么输入代码:

pkgs <- installed.packages()

colnames(pkgs)

结果如下所示:

pkgs <- installed.packages()

colnames(pkgs)

 [1] "Package"               "LibPath"               "Version"              

 [4] "Priority"              "Depends"               "Imports"              

 [7] "LinkingTo"             "Suggests"              "Enhances"             

[10] "License"               "License_is_FOSS"       "License_restricts_use"

[13] "OS_type"               "MD5sum"                "NeedsCompilation"     

[16] "Built"

当需要检查包是否已经安装时,可以使用以下代码:

c("moments", "Built") %in% installed.packages()[, "Package"]

结果如下所示:

c("moments", "Built") %in% installed.packages()[, "Package"]

[1]  TRUE FALSE

查看包的版本

查看包的版本可以通过下面代码实现:


[1] "3.2.0"

包的更新update.packages()

update.packages()

查看本地的包

查看默认加载的包,忽略基本的包

getOption("defaultPackages")

[1] "datasets"  "utils"     "grDevices" "graphics"  "stats"     "methods"

查看当前已经加载过的包

(.packages())

[1] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "methods"
[7] "base"

显示所有可用的包

(.packages(all.available=TRUE))

(.packages(all.available=TRUE))

  [1] "bitops"       "car"          "caTools"      "coin"        
  [5] "colorspace"   "crayon"       "curl"         "dichromat"   
  [9] "digest"       "evaluate"     "formatR"      "fun"         
 [13] "ggplot2"      "gtable"       "highr"        "htmltools"   
 [17] "httr"         "ISwR"         "jsonlite"     "KMsurv"      
 [21] "knitr"        "labeling"     "lme4"         "magrittr"    
 [25] "maps"         "maptools"     "markdown"     "MatrixModels"
 [29] "memoise"      "mime"         "minqa"        "mnormt"      
 [33] "modeltools"   "multcomp"     "munsell"      "mvtnorm"     
 [37] "nloptr"       "openssl"      "pbkrtest"     "plyr"        
 [41] "praise"       "psych"        "quantreg"     "R6"          
 [45] "RColorBrewer" "Rcpp"         "RcppEigen"    "RCurl"       
 [49] "reshape2"     "rmarkdown"    "sandwich"     "scales"      
 [53] "sp"           "SparseM"      "stringi"      "stringr"     
 [57] "swirl"        "testthat"     "TH.data"      "yaml"        
 [61] "zoo"          "base"         "boot"         "class"       
 [65] "cluster"      "codetools"    "compiler"     "datasets"    
 [69] "foreign"      "graphics"     "grDevices"    "grid"        
 [73] "KernSmooth"   "lattice"      "MASS"         "Matrix"      
 [77] "methods"      "mgcv"         "nlme"         "nnet"        
 [81] "parallel"     "rpart"        "spatial"      "splines"     
 [85] "stats"        "stats4"       "survival"     "tcltk"       
 [89] "tools"        "utils"

自定义启动时候的加载包

如果需要长期使用某个包的话,每次开启都需要输入library(),比较麻烦,因此可以让R启动时自动加载某些包。在R的安装目录/etc/Rprofile.site加入下载语句:

例如让R启动时自动加载ggplot2包

local({old <- getOption(“defaultPackages”)
options(defaultPackages = c(old, “ggplot2”))})

安装包,并加载包

if(!require("multcomp")){

  install.packages("multcomp")

  library(multcomp)

}

常用R包的搜集

数据导入

以下R包主要用于数据导入和保存数据

  • feather:一种快速,轻量级的文件格式。在R和python上都可使用
  • readr:实现表格数据的快速导入。中文介绍可参考这里
  • readxl:读取Microsoft Excel电子表格数据
  • openxlsx:读取Microsoft Excel电子表格数据
  • googlesheets:读取google电子表格数据
  • haven:读取SAS,SPSS和Stata统计软件格式的数据
  • httr:从网站开放的API中读取数据
  • rvest:网页数据抓取包
  • xml2:读取HTML和XML格式数据
  • webreadr:读取常见的Web日志格式数据
  • DBI:数据库管理系统通用接口包
  • RMySQL:用于连接MySQL数据库的R包
  • RPostgres:用于连接PostgreSQL数据库的R包
  • bigrquery用于连接Google BigQuery的R包
  • PivotalR:用于读取Pivitol(Greenplum)和HAWQ数据库中的数据
  • dplyr:提供了一个访问常见数据库的接口
  • data.table:data.table包的fread()函数可以快速读取大数据集
  • git2r:用于访问git仓库

数据整理

以下R包主要用于数据整理,以便于你后续建模分析:

  • tidyr:用于整理表格数据的布局
  • dplyr:用于将多个数据表连接成一个整齐的数据集
  • purrr:函数式编程工具,在做数据整理时非常有用。
  • broom:用于将统计模型的结果整理成数据框形式
  • zoo:定义了一个名zoo的S3类型对象,用于描述规则的和不规则的有序的时间序列数据。

数据可视化

以下R包用于数据可视化:

  • ggplot2及其扩展:ggplot2包提供了一个强大的绘图系统,并实现了以下扩展

    • ggthemes:提供扩展的图形风格主题
  • ggmap:提供Google Maps,Open Street Maps等流行的在线地图服务模块

  • ggiraph:绘制交互式的ggplot图形

  • ggstance:实现常见图形的横向版本

  • GGally:绘制散点图矩阵

  • ggalt:添加额外的坐标轴,geoms等

  • ggforce:添加额外geoms等

  • ggrepel:用于避免图形标签重叠

  • ggraph:用于绘制网络状、树状等特定形状的图形

  • ggpmisc:光生物学相关扩展

  • geomnet:绘制网络状图形

  • ggExtra:绘制图形的边界直方图

  • gganimate:绘制动画图

  • plotROC:绘制交互式ROC曲线图

  • ggspectra:绘制光谱图

  • ggnetwork:网络状图形的geoms

  • ggradar:绘制雷达图

  • ggTimeSeries:时间序列数据可视化

  • ggtree:树图可视化

  • ggseas:季节调整工具

  • lattice:生成栅栏图

  • rgl:交互式3D绘图

  • ggvis:交互式图表多功能系统

  • htmlwidgets:一个专为R语言打造的可视化JS库

    • leaflet:绘制交互式地图
  • dygraphs:绘制交互式时间序列图

  • plotly:交互式绘图包,中文介绍详见这里

  • rbokeh:用于创建交互式图表和地图,中文介绍

  • Highcharter:绘制交互式Highcharts图

  • visNetwork:绘制交互式网状图

  • networkD3:绘制交互式网状图

  • d3heatmap:绘制交互式热力图,中文介绍

  • DT:用于创建交互式表格

  • threejs:绘制交互式3d图形和地球仪 -rglwidget:绘制交互式3d图形

  • DiagrammeR:绘制交互式图表

  • MetricsGraphics:绘制交互式MetricsGraphics图

  • rCharts:提供了对多个javascript数据可视化库(highcharts/nvd3/polychart)的R封装。

  • coefplot:可视化统计模型结果

  • quantmod:可视化金融图表

  • colorspace:基于HSL的调色板

  • viridis:Matplotlib viridis调色板

  • munsell:Munsell调色板

  • RColorBrewer:图形调色板

  • igraph:用于网络分析和可视化

  • latticeExtra:lattice绘图系统扩展包

  • sp:空间数据工具

数据转换

以下R包用于将数据转换为新的数据类型

  • dplyr:一个用于高效数据清理的R包。视频学习课程
  • magrittr:一个高效的管道操作工具包。
  • tibble:高效的显示表格数据的结构
  • stringr:一个字符串处理工具集
  • lubridate:用于处理日期时间数据
  • xts:xts是对时间序列数据(zoo)的一种扩展实现,提供了时间序列的操作接口。
  • data.table:用于快速处理大数据集
  • vtreat:一个对预测模型进行变量预处理的工具
  • stringi:一个快速字符串处理工具
  • Matrix:著名的稀疏矩阵包

统计建模与推断

下述R包是统计建模最常用的几个R包,其中的一些R包适用于多个主题。

  • car:提供了大量的增强版的拟合和评价回归模型的函数。
  • Hmisc:提供各种用于数据分析的函数
  • multcomp:参数模型中的常见线性假设的同时检验和置信区间计算,包括线性、广义线性、线性混合效应和生存模型。
  • pbkrtest用于线性混合效应模型的参数Bootstrap检验
  • MatrixModels:用于稠密矩阵和稀疏矩阵建模
  • mvtnorm:用于计算多元正态分布和t分布的概率,分位数,随机偏差等
  • SparseM:用于稀疏矩阵的基本线性代数运算
  • lme4:利用C++矩阵库 Eigen进行线性混合效应模型的计算。
  • broom:将统计模型结果整理成数据框形式
  • caret:一个用于解决分类和回归问题的数据训练综合工具包
  • glmnet:通过极大惩罚似然来拟合广义线性模型
  • gbm:用于实现随机梯度提升算法
  • xgboost:全称是eXtreme Gradient Boosting。是Gradient Boosting Machine的一个c++实现。目前已制作了xgboost工具的R语言接口。详见统计之都的一篇介绍
  • randomForest:提供了用随机森林做回归和分类的函数
  • ranger:用于随机森林算法的快速实现
  • h2o:H2O是0xdata的旗舰产品,是一款核心数据分析平台。它的一部分是由R语言编写的,另一部分是由Java和Python语言编写的。用户可以部署H2O的R程序安装包,之后就可以在R语言环境下运行了。
  • ROCR:通过绘图来可视化分类器的综合性能。
  • pROC:用于可视化,平滑和对比ROC曲线

沟通交流

以下R包用于实现数据科学结果的自动化报告,以便于你跟人们进行沟通交流。

  • rmarkdown :用于创建可重复性报告和动态文档
  • knitr:用于在PDF和HTML文档中嵌入R代码块
  • flexdashboard:基于rmarkdown,可以轻松的创建仪表盘
  • bookdown:以R Markdown为基础,用于创作书籍和长篇文档
  • rticles:提供了一套R Markdown模板
  • tufte:用于实现Tufte讲义风格的R Markdown模板
  • DT:用于创建交互式的数据表
  • pixiedust:用于自定义数据表的输出
  • xtable:用于自定义数据表的输出
  • highr:用于实现R代码的LaTeX或HTML格式输出
  • formatR:通过tidy_source函数格式化R代码的输出
  • yaml:用于实现R数据与YAML格式数据之间的通信。

自动化分析

以下R包用于创建自动化分析结果的数据科学产品:

  • shiny:一个使用R语言开发交互式web应用程序的工具。中文教程
    • shinydashboard:用于创建交互式仪表盘
  • shinythemes:给出了Shiny应用程序的常用风格主题
  • shinyAce:为Shiny应用程序开发者提供Ace代码编辑器。
  • shinyjs:用于在Shiny应用程序中执行常见的JavaScript操作
  • miniUI:提供了一个UI小部件,用于在R命令行中集成交互式应用程序
  • shinyapps.io:为创建的Shiny应用程序提供托管服务
  • Shiny Server Open Source:为Shiny应用程序提供开源免费的服务器
  • Shiny Server Pro:为企业级用户提供一个Shiny应用程序服务器
  • rsconnect:用于将Shiny应用程序部署到shinyapps.io
  • plumber:用于将R代码转化为一个web API
  • rmarkdown:用于创建可重复性报告和动态文档
  • rstudioapi:用于安全地访问RStudio IDE的API

程序开发

以下这些包主要用于开发自定义的R包:

  • RStudio Desktop IDE:R的IDE。大家都懂,不用解释。
  • RStudio Server Open Source:开源免费的RStudio服务器
  • RStudio Server Professional:商业版RStudio服务器
  • devtools:一个让开发R包变得简单的工具集
  • packrat:创建项目的特定库,用于处理包的版本问题,增强代码重现能力。
  • drat:一个用于创建和使用备选R包库的工具
  • testthat:单元测试,让R包稳定、健壮,减少升级的痛苦。
  • roxygen2:通过注释的方式,生成文档,远离Latex的烦恼。
  • purrr:一个用于 提供函数式编程方法的工具
  • profvis:用于可视化R代码的性能分析数据
  • Rcpp:用于实现R与C++的无缝整合。详见统计之都文章
  • R6:R6是R语言的一个面向对象的R包,可以更加高效的构建面向对象系统。
  • htmltools:用于生成HTML格式输出
  • nloptr:提供了一个NLopt非线性优化库的接口
  • minqa:一个二次近似的优化算法包
  • rngtools:一个用于处理随机数生成器的实用工具
  • NMF:提供了一个执行非负矩阵分解的算法和框架
  • crayon:用于在输出终端添加颜色
  • RJSONIO:rjson是一个R语言与json进行转的包,是一个非常简单的包,支持用 C类库转型和R语言本身转型两种方式。
  • jsonlite:用于实现R语言与json数据格式之间的转化
  • RcppArmadillo:提供了一个Armadillo C++ Library(一种C++的线性代数库)的接口

实验数据

以下R包给出了案例实战过程中可用的训练数据集:

  • babynames:包含由美国社会保障局提供的三个数据集
  • neiss:2009-2014年期间提供给美国急诊室的所有事故报告样本数据
  • yrbss:美国疾病控制中心2009-2013年期间青年危险行为监测系统数据
  • hflights:
  • USAboundaries:2011年全年休斯顿机场的所有航班数据
  • rworldmap:国家边界数据
  • usdanutrients:美国农业部营养数据库
  • fueleconomy:美国环保署1984-2015年期间的燃油经济数据
  • nasaweather:包含了一个覆盖中美洲的非常粗糙的24*24格地理位置和大气测量数据。
  • mexico-mortality:墨西哥死亡人数数据
  • data-movies和ggplotmovies:来自互联网电影数据库imdb.com的数据
  • pop-flows:2008年全美人口流动数据
  • data-housing-crisis:经过清洗后的2008美国房地产危机数据
  • gun-sales:纽约时报提供的有关枪支购买的每月背景调查统计分析数据
  • stationaRy:从成千上万个全球站点收集到的每小时气象数据
  • gapminder:摘自Gapminder的数据
  • janeaustenr:简·奥斯丁小说全集数据

查看R的版本

sessionInfo() # 要加括号

如下所示:

 sessionInfo() # 要加括号

R version 3.4.0 (2017-04-21)

Platform: x86_64-w64-mingw32/x64 (64-bit)

Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:

[1] LC_COLLATE=Chinese (Simplified)_China.936  LC_CTYPE=Chinese (Simplified)_China.936   

[3] LC_MONETARY=Chinese (Simplified)_China.936 LC_NUMERIC=C                              

[5] LC_TIME=Chinese (Simplified)_China.936    

attached base packages:

[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:

[1] downloader_0.4 rafalib_1.0.0 

loaded via a namespace (and not attached):

[1] compiler_3.4.0     tools_3.4.0        RColorBrewer_1.1-2 digest_0.6.15

查看R语言的内置数据集data()

R的基本包中有一个叫datasets,里面全是示例数据集,供用户练习用。同时也可以使用data()来查看所有已经成功加载的包的数据集:

Data sets in package ‘datasets’:

AirPassengers                         Monthly Airline Passenger Numbers 1949-1960

BJsales                               Sales Data with Leading Indicator

BJsales.lead (BJsales)                Sales Data with Leading Indicator

...

略

如果需要查看更完整的列表,包括已安装的所有包的数据,可以使用下面代码:

data(package = .packages(TRUE))

加载特定包中的数据集

如果想要访问任意数据集里面的数据,可以使用data()函数,传入数据集的名称以及所在的包名(如果这个包已经被加载了,就可以不用packages="包名"这个以参数了),如下所示:

data("kidney", package = "survival")
head(kidney)

这个命令是调用survival这个包中的kidney这个数据集,如下所示:

data("kidney", package = "survival")
head(kidney)
  id time status age sex disease frail
1  1    8      1  28   1   Other   2.3
2  1   16      1  28   1   Other   2.3
3  2   23      1  48   2      GN   1.9
4  2   13      0  48   2      GN   1.9
5  3   22      1  32   1   Other   1.2
6  3   28      1  32   1   Other   1.2

参考资料

  1. http://www.xueqing.tv/cms/article/198
  2. http://blog.fens.me/
  3. 学习R.[美] Richard,Cotton 著刘军 译
  4. R 从安装开始:BiocLite 到 BiocManager
  5. R语言编程指南.任坤 著,王婷,赵孟韬,王泽贤 译
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,230评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,261评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,089评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,542评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,542评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,544评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,922评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,578评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,816评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,576评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,658评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,359评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,920评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,859评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,381评论 2 342

推荐阅读更多精彩内容

  • 在学习R的时候,R的包众多,很多时候对于初学者会造成很大的困扰就是不知道用什么样的包比较合适。我会在不断使用...
    果果哥哥BBQ阅读 15,983评论 0 62
  • 1.数据导入 以下R包主要用于数据导入和保存数据: feather:一种快速,轻量级的文件格式;在R和python...
    雨一流阅读 1,283评论 0 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,082评论 1 32
  • 在上一节「R shiny基础」交互式入门, 我们实现了简单的用户交互。这一篇将会在之前的基础上,以对美国的人口普查...
    xuzhougeng阅读 8,349评论 1 13
  • 无心的相遇 在莫名的瞬间 成了定格 韶光漫漫 一缕牵挂 颤微微摇晃在韶华的缝隙 是娇弱里含着忧愁的吊兰 盈满的盛放...
    燕尾无声阅读 265评论 0 0