R语言中$和@是什么意思

更新时间:2023-06-16 23:14:36 阅读: 评论:0

R语⾔中$和@是什么意思
$是S3类的引⽤⽅式,$⽐较常⽤,当⼀个函数⾥需要返回多个值(⽐如有变量,有向量,有矩阵)时,我们要⽤list,⽽不是return,这时如果想提取某个变量的结果,就需要⽤到$,默认情况下,对于 list, environment 这两种对象,$可以提取(extract)出⾥⾯的元素,对于⾃⼰定义的class,可以实现$ S3 Method。通常我们的data.frame, list. 向量等⽤$就可以。纪晓岚的老婆
爆字的笔顺
@是S4类的引⽤⽅式。@⽐较少⽤。对于 S4 object,@可以提取出 slot。
⽐如
m1<-lm(Y~X,data=....(some data frame))
m1$coefficients
远和近就会返回回归直线的截距和斜率。
x$y等价于x[["y", exact = FALSE]],⽤于获取dataframe或者list⾥⾯的某个变量,
⽐如mtcars$cyl和 diamonds$carat。不同之处在于$可以部分匹配变量名,⽐如:
x <- list(abc = 1)
x$a
#> [1] 1
x[["a"]]
#> NULL
外部设备S4也有例如,有个维恩包Vennerable:S4类型,想取得⾥⾯InterctionSets,信息必须⽤@符号。
清波漾漾
@ 是R中,S4类的⼀个操作符,⽤于提取S4对象中的内容(slot),⽐如:
tClass("Person",
slots = list(name = "character", age = "numeric"))
alice <- new("Person", name = "Alice", age = 40)
科学技术哲学研究
alice@age
> [1] 40
这个时候是不起作⽤的,因为被S4类重写了。可以⾃⼰定义的⾏为。
顺便对⽐⼀下“[[” 和$的效率:x <- list(axy = 1:100, b = rep(letters, each = 4))
microbenchmark(
x[["axy"]],
x$axy,
x$a,
times = 10000L,
control = list(warmup = 1000L)
)
>
春光的诗句Unit: nanoconds
expr min lq    mean median uq  max neval
x[["axy"]]  0  0 16.2116      0  1 27584 10000
x$axy  0  0 28.7540      0  1 14113 10000
x$a  0  0 40.2570      0  1 25018 10000
三种写法⽤时相差不⼤。不过需要极限优化的时候可以考虑⽤“[[”⽽不是 $。猫哭耗子歇后语
Processing math: 100%

本文发布于:2023-06-16 23:14:36,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1041674.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:需要   例如   返回   提取   时候   部分
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图