狭义表达式指表达式(expression)类对象,由expression函数产生;而广义的表达式既包含expression类,也包含R“语言”类(language)。expression和language是R语言中两种特殊数据类:

getClass("expression")     #expression由向量派生得到getClass("language")    #虚拟类(程序控制关键词和name/call子类)
Virtual Class "language" [package "methods"]
No Slots, prototype of class "name"
Known Subclasses:
Class "name", directly
Class "call", directly
Class "{", directly
Class "if", directly
Class "<-", directly
Class "for", directly
Class "while", directly
Class "repeat", directly
Class "(", directly
Class ".name", by class "name", distance 2, with explicit coerce

1.expression

expression(..)
#产生未评估求值(evaluate)的表达式(expression类型的向量/列表,[,[[,$进行子集化), ..-R对象(通常是call类型,符号或常量),返回值的长度等于参数个数
is.expression(x)
as.expression(x,..) #x任意R对象
######################
length(ex1<-expression(1 + 0:9)) # 1
eval(ex1) # 1:10length(ex2<-expression(u, v, 1+ 0:9)) # 3
ex3<-expression(u, v, z=1+0:9)
#子集化
mode(ex3 [3])   # expression
mode(ex3[[3]])  # call
mode(ex3$z)   # call
typeof(ex3$z)   # language
mode(ex3[[2]])  # name
typeof(ex3[[2]])    #symbol
ex3$z<-NULL    # 删除#注:expression函数将参数当做列表处理,故参数要符合列表元素的书写规则

2.parse

一般用于从文件中读取文本作为表达式,返回expression类

parse(file = "", n = NULL, text = NULL, prompt = "?", keep.source = getOption("keep.source"), srcfile, encoding = "unknown")cat("x<-c(1,4)\n  x^3-10; outer(1:7,5:9)\n", file="xyz.Rdmped")
parse(file="xyz.Rdmped", n=2)   #expression(x<-c(1,4)\n  x^3-10)
unlink("xyz.Rdmped")parse(text="a+b")
expression(a+b)

3.quote

quote(expr)  #expr-任何语法上有效的R表达式,返回值一般情况下是call类,expr是单个变量时为name类,expr为常量时返回值的存储模式与相应常量的存储模式相同
cl<-quote(1 + sqrt(a) + b^c)   #1 + sqrt(a) + b^c
mode(cl)    #"call"
typeof(cl)  #"language"
cl <- quote(a)
mode(cl)    #"name"
length(cl)  # 1
typeof(cl)  #"symbol"
cl<-quote(1)
mode(cl)    #"numeric"
typeof(cl)  #"double"

4.substitute

若不使用环境变量或环境变量参数,substitute函数得到的结果与quote函数相同

substitute(expr,env) #expr-任何语法上有效的R表达式,env-环境或列表对象,默认为当前环境
substitute(1 + sqrt(a) + b^c) == quote(1 + sqrt(a) + b^c) #TRUE
ss <- substitute(y == sqrt(a, b), list(a = 3, b = 2))a=1
substitute(a+b,list(a=a)) #1+b

5.deparse

将未评估的表达式转换成字符串

deparse(expr, width.cutoff = 60L, backtick = mode(expr) %in% c("call", "expression", "(", "function"), control = c("keepInteger", "showAttributes", "keepNA"), nlines = -1L)
#expr-any r expression,"call"/"expression"/"function"/"("
#backtick-逻辑值,当不遵循标准语法时-符号名称是否应该用反引号括起来
#width.cutoff-[20,500]中的整数,确定尝试换行的截止(以字节为单位)
#control="all"最接近deparse()为parse()的反转deparse(args(lm))
deparse(args(lm), width = 500)e<-quote(`foo bar`) #name类
deparse(e)  #"foo bar"
deparse(e, backtick = TRUE)    #"foo bar"e <- quote(`foo bar`+1)
deparse(e,backtick=FALSE)
deparse(e,backtick=TRUE)
deparse(e,control = "all")       #"quote(`foo bar` + 1)"
deparse(e,backtick=FALSE,control = "all")

R语言中的表达式函数相关推荐

  1. R语言中的管道函数操作 %>%

    R语言中的管道操作 %>% :相当于将左边的作为右边函数的第一个参数. 快捷键:ctrl+shift+M 例如:f(x,y)等价于x %>% f(y) g(f(x,y),z)等价于x %& ...

  2. r语言 c语言调用函数返回值,r语言中怎样查看函数源代码

    在R中,代码可以分为如下几个级别: ​首先,是你输入了函数对象名称,你可以直接看到代码的,如要获得函数对象fivenum的代码,就只需要在Console中键入函数对象名称fivenum就可以得到结果, ...

  3. r语言中怎样查看函数源代码

    源自: http://zhidao.baidu.com/link?url=hp77BAOSlcZgXDFghzP8sE9Gt2D2r4YkK0cwtRzWU0EwI9w7pZ30lpEQPnJcK0_ ...

  4. R语言中使用boxplot函数绘制箱线图

    (源自百度,便于查看故复制于此,若有冒犯会删除) 箱线图简介 箱线图又称箱形图或盒须图,该图是由5个特征值绘制而成的图形. 5个特征值是变量的最大值.最小值.中位数.第1四分位数和第3四分位数. 连接 ...

  5. matlab中gen2par函数,R语言中绘图par()函数用法

    图形参数 当参数no.readonly=TRUE时,函数par()就只允许有这一个参数了,并且会返回当前绘图设备中各个参数的参数值. 每一个图形设备都有自己的绘图参数,如果当前还没有打开绘图设备,那么 ...

  6. 用r语言画出y = ax^2 + bx + c,R语言中使用curve函数绘制常用函数曲线

    前面文章中介绍了使用plot函数绘制图形的方法.本文介绍一下使用R中curve函数绘制常见函数曲线的方法. 1.curve函数简介 curve函数语法格式如下: curve(expr, from = ...

  7. 《R语言编程艺术》——1.4 R语言中一些重要的数据结构

    1.4 R语言中一些重要的数据结构 R有多种数据结构.本节将简单介绍几种常用的数据结构,使读者在深入细节之前先对R语言有个大概的认识.这样,读者至少可以开始尝试一些很有意义的例子,即使这些例子背后更多 ...

  8. R语言的一个加法函数

    ## R语言中的加法函数 add4 <- function(x, y) {x + y } 一个复杂一些的R语言程序 ## R语言程序 add2 <- function(x, y) {x + ...

  9. r语言c5.0要求因子输出,R语言中因子的创建与使用

    原标题:R语言中因子的创建与使用 因子在R语言中可以用来表示名义型变量或有序变量.名义变量一般表示类别,如性别,种族等等.有序变量是有一定排序顺序的变量,如职称,年级等等.在R语言中,名义变量和有序变 ...

最新文章

  1. 转载:如何快速转载CSDN及博客园中的博客
  2. 半导体对物联网之水与鱼的关系
  3. idea代码调试debug篇
  4. html5 的menu的属性,HTML5 menu 标签
  5. JSP Unable to compile class for JSP
  6. bzoj 3611: [Heoi2014]大工程(虚树+树形DP)
  7. 教你安装ps,pr,ae,ai等Adobe软件,办公必备
  8. kronecker引理证明_连续型Kronecker引理
  9. 芥子纳须弥——浅谈数据压缩技术
  10. 2022年终极NFT课程
  11. 共享单车之租赁需求预估
  12. 游戏建模3Dmax基础:游戏建模渲染小技巧
  13. 用Meta标签代码让360双核浏览器默认极速模式不是兼容模式
  14. Web主机管理器(WHM)中如何安装SSL证书
  15. SparkRDD函数详解
  16. 微信小程序实现短信认证功能
  17. 学会拒绝摔倒“哭泣”,拒绝接受“溺爱”
  18. 二手书籍交易管理系统,二手书交易系统,二手书交易网站毕业设计
  19. 人工智能、物联网时代,嵌入式思维的应用
  20. spring security基于数据库的安全认证 配置

热门文章

  1. 我希望逢着一个丁香一样地结着愁怨的姑娘
  2. Apriori算法——中医病症辩证关联规则分析
  3. python中有没有switch_为什么python没有switch/case
  4. vue子组件修改props传进来的值、回调函数
  5. 从视频中提取图片(截取ppt)
  6. 万字详解什么是生成对抗网络GAN
  7. Boggle问题积累
  8. 为什么pdf文件在一个计算机上能打开,拷贝到别的计算机上就打不开,显示文件已损坏?,pdf文件在电脑上打不开怎么办...
  9. 自媒体平台做网赚不要指望着,平台广告分成!
  10. UltraEdit32常用快捷键