vlambda博客
学习文章列表

R语言显示日期为中文想改英文


想画个日历图,结果被计算机默认语言干扰。复现如下:

library(pacman)
p_load(openair)
data(mydata)
calendarPlot(mydata, pollutant = "o3", year = 2003)

这可视化是够糟糕的,需要英语版本稍微美观一些。方法如下:

Sys.setlocale("LC_TIME", "English")

这样再运行源代码,就变成:


因为不够300字,让我再补一些小技巧~


R语言元编程:表达式

引言:

R是一门语言,语言是沟通的桥梁,不仅能够读懂,还要能书写。目前对于R语言的用户(包括我),大多都满足于“拿来主义”,复制粘贴别人的代码来实现前人已经实现过的优秀功能。但是这是远远不够的,从复制到创造,必须要知道如何进行元编程(meta programming)。因此希望开设元编程系列,希望这个系列结束之后,所有读者(包括我自己)都能够用R语言随心所欲地表达自己的数据思维,能够自己写一个属于自己的包。主要参考书:

Mastering Software Development in R bookdown.org


首先要介绍的,是quote函数。R语言中所有的东西都可以放在这个函数里面,它表示对这段代码的一种变量保存的形式。

quote(2+2)

quote(a <- 2+2)

quote(a1)

可以尝试把quote函数的返回值保存起来。

quote(a <- 2+2) -> for_evaluation

那么这段引用就保留在for_evaluation这个变量中。

如果要执行for_evaluation这个表达式,那么可以使用eval函数。

eval(for_evaluation)

不过这样是不会有结果的,因为赋值语句本身不会输出结果,结果我们保存在a变量中了。

a

[1] 4

如果原始R代码是字符串格式的,可以用parse函数进行转化,再用eval函数进行评估。

tpt_string <- "1:5"

tpt_expression <- parse(text = tpt_string)

eval(tpt_expression)

parse的逆运算,叫做deparse,可以把表达式转化为字符串。

deparse(for_evaluation)

[1] "a <- 2 + 2"