首页 > > > R语言元编程:表达式
作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等。知乎专栏:R语言数据挖掘。邮箱:huang.tian-yuan@qq.com.欢迎合作交流。
引言:
R是一门语言,语言是沟通的桥梁,不仅能够读懂,还要能书写。目前对于R语言的用户(包括我),大多都满足于“拿来主义”,复制粘贴别人的代码来实现前人已经实现过的优秀功能。但是这是远远不够的,从复制到创造,必须要知道如何进行元编程(meta programming)。因此希望开设元编程系列,希望这个系列结束之后,所有读者(包括我自己)都能够用R语言随心所欲地表达自己的数据思维,能够自己写一个属于自己的包。主要参考书:
Mastering Software Development in R
首先要介绍的,是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"原文作者:;如有侵权,请联系管理员删除。