听说你也有 emojifont 的字体使用困惑

问题复现

Y 叔有一个神包,能够在 ggplot 图层里随心所欲的添加各种 emoji,然而很多人在使用的时候却不能「随心所欲」,经常一行函数输进去一张白板输出来。最近在我的星球里也有人提到这个问题,作为一个无趣的人我虽然之前没有实际使用过这个有趣的包,但是今天要被迫营业了。

在反馈中可以看到 Windows 中的基本错误信息有两类:一是提示 warning,虽然能出图但是图和想象中的样子不一样;二是提示 warning,然后直接输出一个空白图层。其中 warning 的内容是: In grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, : Windows 字体数据库里没有这样的字体系列。

大文本另类去重多种解法

今天分析数据的时候刚好碰到一个小问题,因为本身文件较大一开始想不出比较好的解决方法,睡个午觉醒来突然有了灵感,自认为目前解决的还算巧妙。

问题

一个 3 列 3,741,430 行的文本(行数比较多),第一列是字符,第二列是字符,第三列是数值,tab 分割。数据格式如下:

A23    B66    1234
C56 D34 2334
B66 A23 1234
D34 C56 2334
E78 F88 1234

这个文本虽然是3,741,430 行,但是其有效信息只有一半。因为A23 B66 1234B66 A23 1234 只是第二列和第一列互换了下位置。

需求

如何尽可能快的处理这个 3 列 3,741,430 行的文本,当某一行的第一列和另一行的第二列相同同时它的第二列又和那一行的第一列相同时,就只保留这两行中的一行即可(具体留哪行没有要求)。简单说就是如下的4行只保留2行:

A23    B66    1234
C56 D34 2334
B66 A23 1234 # 同第一行
D34 C56 2334 # 同第二行

要修改为

A23    B66    1234
D34 C56 2334

如何快速找到自己需要的 R 包

Bioconductor 的存在让只用 R 语言完成 (90% 的) 生物信息分析成为了一种可能,也在很大程度上推动了 R 在生物信息领域的应用和发展。目前 Bioconductor 配合 R 3.6 使用升级到了 3.9 版本。一共有 R 包 1741 个。学习生物信息和 R 语言,它是非常好的资源。

平常偶尔会有人问到我这样的问题:我目前正在做某某分析,你知道有什么 R 包可以用么?如果是不熟的人而且他做的分析我也不熟悉,一般我的回答直接就是不知道;如果是好朋友那我就得顺手帮他快速的找到想要的 Bioconductor R 包。看完今天的文章,这个操作对你来说以后也没有什么难度。

几步操作,快准狠,找到自己要想的 Bioconductor 工具。

关于 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 的安装配置和升级对大多数人来说都是比较痛苦的事情。这里简单总结一些的东西,希望对有需要的人有用。

Your browser is out-of-date!

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

×