r - S3 对象如何调用方法?

标签 r object plot summary r-s3

我一直在努力发展我的 S3 学习成果。我在这里正确使用了object吗?我想创建一个 summaryprintplot 类。我暂时使用 t 检验,但函数本身并不重要 - 正确获取 S3 代码才是重要的。

注意:我已经阅读了我能找到和推荐的所有内容 - 但由于他们继续使用 sloop 或 lm 我只是不明白这些包中的独特之处或包含的内容 - 我想从头开始构建。谢谢

library(gapminder)
library(dplyr)
library(ggplot2)

head(gapminder)
str(gapminder)

part3 <- gapminder
Asia1 <- subset(part3, continent == "Asia")
Africa1 <- subset(part3, continent =="Africa")
part3c <- rbind(Asia1, Africa1)

summary.part3s3b <-function(part3g) {
  cat('The following should give t-test results:\n')
  part3g <- t.test(data = part3c,
                   lifeExp ~ continent)
  part3g
}
summary(part3g)

最佳答案

我们定义一个构造函数来创建part3s3b对象以及一个summary和plot方法。摘要方法创建了一个summary.part3s3b 类的对象,它有一个 print 方法。然后我们测试一下。查看 lm、print.lm、plot.lm、summary.lm、print.summary.lm 作为另一个示例。

# construct a part3s3b object
part3s3b <- function(x, ...) {
  structure(x, class = c("part3s3b", setdiff(class(x), "part3s3b")))
}

# construct summary.part3s3b object which is an htest with 
#  a c("summary.part3s3b", "htest") class
summary.part3s3b <- function(object, ...) {
  y <- t.test(data = object, lifeExp ~ continent)
  structure(y, class = c("summary.part3s3b", "htest"))
}

# same as print.htest except it also displays a line at the beginning
print.summary.part3s3b <-function(x, ...) {
  cat('The following should give t-test results:\n')
  NextMethod()
}

plot.part3s3b <- function(x, ...) {
  cat("plotting...\n")
  NextMethod()
}

# test    
X <- part3s3b(part3c)  # create part3s3b object X
summary(X)  # run summary.part3s3b and print.summary.part3s3b
plot(X)  # run plot.part3s3b

关于r - S3 对象如何调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70593182/

相关文章:

r - R 中将向量分成两组的所有组合

Javascript:字符串与对象

plot - 如何使用 Plots.jl 缩放字体大小

python - 从下拉菜单或按钮-Python/Plotly 将 sqrt 设置为 yaxis 比例

r - 比较 R 中多个数据帧的唯一值

R - 如何下载 ascii 光栅并解压缩?

r - r中多个变量的频率表

javascript - 如何将包含对象字符串的数组转换为常规键对象对?

c# - View 在从区域中移除后未被处置

python - 在 python 中绘制泊松分布图