关于Shiny调试你应该知道的

Finding your bug is a process of confirming the many things that you believe are true — until you find one which is not true.

—Norm Matloff

第一次接触网页开发是两三年前的事,那时我曾经问过计划带我入门前端的前辈:入门前端的标准是什么。他当时用一种极平和的语气和我说:学会dubug。几年后的今天我即便也写过一点网页工具,但还是依然没能入门。反思一下:一是 JavaScript 学的不好,二就是不敢说自己有多少 debug 的能力。

遂放弃。

最近因为需要又要涉及一点网页工具开发,同时因为需求整体和 R 交互比较多于是决定用 R 的 Shiny 来搞一搞。

写了一个多星期我感觉 Shiny 确实解决了不熟悉前后端交互的人写网页的大多数问题,但如何 debug 的门槛还是摆在那里。比如前几天一个高手和我吐槽写 Shiny 时不知道改了什么突然不能正确运行了,更糟心的是还没有任何报错信息。当然,后来经过讨论发现其实并非没有报错信息,只是那时他没有找到而已。

这篇文章就结合最近学习的一点资料,大致聊聊在 Shiny 中 debug 的一些方法。

Shiny debug 主要有三个步骤,分别是调试(Debugging),追踪(Tracing)和错误处理(Error handling)

  • Debugging: 所谓的调试就是猜,然后在你认为可能有错误的地方设置一个断点,再执行接下来每个语句的时候就都可以检查程序当时所在的状态。
  • Tracing:可以在运行程序的时候收集程序运行产生的信息而无需暂停程序,在诊断系统性问题时因为我们无法频繁的中断使用这一方式就比较合适。
  • Error handling: 在客户端和服务器端找到错误的来源并确定原因。

R 语言可视化之案例

qplot 使用

导入所需数据格式为data.frame

data(mtcars)
df <- mtcars[, c("mpg", "cyl", "wt")]
head(df)

qplot()基本用法

qplot(x, y=NULL, data, geom="auto",
xlim = c(NA, NA), ylim =c(NA, NA))

# geom 画什么图;main 题目;xlab,ylab xy轴标签
# color 颜色;size 点大小;shape 点形状

R 语言可视化之原理概述篇

整体介绍

一张统计图形就是从数据到几何对象(geometric object, 缩写为geom, 包括点、线、条形等)的图形属性(aesthetic attributes, 缩写为aes, 包括颜色、形状、大小等)的一个映射。此外, 图形中还可能包含数据的统计变换(statistical transformation, 缩写为stats), 最后绘制在某个特定的坐标系(coordinate system, 缩写为coord)中, 而分面(facet, 指将绘图窗口划分为若干个子窗口)则可以用来生成数据中不同子集的图形。

要素

  • 数据(data)
  • 映射(mapping): 建立数据与图形元素的关系
  • 几何对象(geom):对数据的渲染和展示
  • 统计变换(stats)
  • 标度(scale)
  • 坐标系(coord)
  • 分面(facet)
  • 主题(theme)

多快好省用 R 处理数据

很早之前我一直都是使用命令行来处理软,cut,sed再grep再加上终极awk基本上就可以随意的按照需求处理各种软件跑出来的文本文件了,再后来就要开始学习python,python 学的怎么样了呢?呵呵。

虽然做过统计学课的助教,上课的时候用的也是R语言,但是博客里并没有几篇R相关的文章。印象中一篇是给初学者的R语言介绍(写这篇文章当时是为了激发一点学生学习R语言的热情),另一篇是R 必备基础知识(写这篇文章当时是因为在写R与统计学基础系列文章,就不得不总结一些R语言的基础知识)。

说实话,我本身对 R 还是非常喜欢和欣赏的,但是日常的使用需求并不高。就拿最基本的文本处理来说,基本上都可以在shell 中进行随心所欲地增删改成,处理成很多R相关软件需要的文本格式,用需要的R包跑一两个命令就可以了。但是目前已经有点厌倦了这样的生活,我后期打算有机会的话用R shiny写一点网页工具给大家娱乐,也打算精进一下 R 的画图技能。这里就have to 用 R 去做一些数据处理,于是就有了这样一系列文章。这篇是关于如何用 R 多快好省的进行数据处理。另外,说句题外话,从我这几天的实际处理数据情况来看,R 有些工作做起来,还是太慢了,也可能是我的业务不够娴熟吧。

R 语言必备基础知识

写着写着R与统计基础莫名其妙地又写开R基础了,一起写吧。

R编程基础

算数运算

常用的+ - * \ ^ 可以直接在console中计算

计算函数

常用的log2(x) log10(x) exp(x) sin(x) tan(x) abs(x) sqrt(x) 也可以直接计算

变量赋值

a <- 3;a <- "b"赋值符号是<-,使用ls()可以显示当前已经创建的对象

R安装升级后的若干规定动作

两个地址

R cran 镜像地址 https://cran.r-project.org/mirrors.html

bioconductor mirror 地址 https://www.bioconductor.org/about/mirrors/

第一步:给R包一个家

通过 Renviron 文件为R自身设置一些环境变量,仅对R有效。

file.edit(‘~/.Renviron’) 打开文件

R_LIBS_USER="E:/Rlib"
# 指定R的附加包安装目录

第二步:给R包指两条路

.Rprofile文件在R启动时会被首先执行。

file.edit(‘~/.Rprofile’) 打开文件

在文件末尾添加两行

R的安装配置与升级

这几天R 语言升级到了3.5 的版本,终于在小数点后面一位有了变化。关于新版本可以这这篇博客中查看 R 3.5.0 is released! (major release with many new features)

R 的安装配置和升级对大多数人来说都是比较痛苦的事情。这里简单总结一些的东西,希望对有需要的人有用。

给初学者的 R 语言介绍

几点说明:

  1. 文档由R Markdown[^1]写成。

  2. 下文是我暂时能想到的一些内容,水平有限,供大家了解,大牛小神都可以出门右拐不用看哈。

  3. 写作初衷:目前在水中科院上海分院这边生物统计学助教,本文及后续一段时间里的R相关内容主要是为了供这门课的同学参考,同时也是自我总结的过程。


数据科学重要性

摩尔定律[^2]告诉我们计算机的计算能力每两年就会翻一倍,这使得数以百万计的计算机生成了大规模数据集。

海量的数据如何处理成了各行各业都需要面对和解决的问题;如何从海量信息中提取有效信息并总结出一般性的规律也值得我们去思考。

数据驱动下产生的这门学科,被我们称为数据科学(Data science),其中涉及到数据的收集、处理、分析和呈现四大方面。

2012年,哈佛商业评论将Data Scientist定义为21世纪最性感的职业[^3](有图有真相)。

统计学基础与R-8

写在前面

入门生物信息,所有人都绕不开统计基础知识和相关实现方式。本章我们将简要介绍统计学相关基础知识以及如何使用R语言进行简单地计算和分析

第八节 常用高阶分析方法

回归分析

所谓回归分析(regression analysis),在统计学中有着非常重要的作用,从大的层面来讲指用自变量(解释变量或者预测变量)来预测因变量(相应变量或者结果变量)的方法。比如在几个自变量中找到和因变量更相关的一个,利用自变量和因变量的关系生成等式对因变量进行预测。从小的层面来说,回归的模型非常之多,也非常复杂,例如最小二乘回归,logistic回归和泊松回归等等。

最小二乘回归是最常用到的回归模型,包括简单线性回归(一元一阶),多项式回归(一元多阶)和多元线性回归(多元)。所谓最小二乘法是用一条直线$y=ax+b$(回归线)拟合一组两变量数据的方法,使得误差平方和(点到直线的距离平方和)最小。对数据进行最小二乘回归分析时,要求数据符合正态分布,独立和同方差性。

统计学基础与R-7

写在前面

入门生物信息,所有人都绕不开统计基础知识和相关实现方式。本章我们将简要介绍统计学相关基础知识以及如何使用R语言进行简单地计算和分析。

比例分析

在之前几节内容中提到了均值分析和比较,但有时候我们关心的并不是均值而是比例(proportion)。

单比例检验

对于n比较大(通常为$np \geq5$ 同时 $nq \geq5$ )的样本来说,根据中心极限定理,样本近似于正态分布,可以使用z检验,其检验统计量计算公式为:

$$z = \frac{p_o-p_e}{\sqrt{p_oq/n}}$$

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×