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"