• R语言——类与对象


    已知2024年4月23日是星期五,编写一个函数day.in.a.week (x, y,z),参数x和y和z分别代表年月日,判断这一天是否存在(例如,2018年没有2月29日,也没有11月31日),如果不存在,返回日期不存在;否则计算并返回当天是星期几。星期几判断方法参照:Sys.Date()   weekdays(Sys.Date())

    编写程序实现冒泡排序,对向量c(4,3,2,5,6,1)进行排序。

    练习使用list列表构建一个学生对象(包含学生姓名、年龄、绩点),并运用class将对象的类设置为student。

    使用构造函数创建S3类对象(包含学生姓名、年龄、绩点),类名为student,同时编写一个类的专属方法,打印出学生绩点。如:Hi xiaoming,your GPA is 4

    练习使用setClass定义S4学生类student_one,并创建一个学生对象(包含学生姓名、年龄、绩点),同时使用validity进行绩点合理性判断。在控制台打印出学生信息

    1. 已知2024年4月23日是星期五,编写一个函数day.in.a.week (x, y,z),参数x和y和z分别代表年月日,判断这一天是否存在(例如,2018年没有2月29日,也没有11月31日),如果不存在,返回日期不存在;否则计算并返回当天是星期几。星期几判断方法参照:Sys.Date()   weekdays(Sys.Date())

    代码:

    1. day_in_a_week <- function(x, y, z) {
    2.   # 判断日期是否存在
    3.   if (!isTRUE(all.equal(as.Date(paste(x, y, z, sep="-"), format="%Y-%m-%d"), as.Date(paste(x, y, z, sep="-"))))) {
    4.     return("日期不存在")
    5.   } else {
    6.     # 计算星期几
    7.     weekday <- weekdays(as.Date(paste(x, y, z, sep="-")))
    8.     return(paste("这一天是星期", weekday))
    9.   }
    10. }
    11. # 测试函数
    12. day_in_a_week(2024, 4, 23)

    截图:

    1. 编写程序实现冒泡排序,对向量c(4,3,2,5,6,1)进行排序。

    代码:

    1. bubble_sort <- function(vec) {
    2.   n <- length(vec)
    3.   for (i in 1:(n - 1)) {
    4.     for (j in 1:(n - i)) {
    5.       if (vec[j] > vec[j + 1]) {
    6.         temp <- vec[j]
    7.         vec[j] <- vec[j + 1]
    8.         vec[j + 1] <- temp
    9.       }
    10.     }
    11.   }
    12.   return(vec)
    13. }
    14. # 测试冒泡排序算法
    15. vec <- c(4, 3, 2, 5, 6, 1)
    16. sorted_vec <- bubble_sort(vec)
    17. print(sorted_vec)

    截图:

    1. 练习使用list列表构建一个学生对象(包含学生姓名、年龄、绩点),并运用class将对象的类设置为student。

    代码:

    1. student <- list(
    2.   name = "张三",
    3.   age = 20,
    4.   gpa = 3.5
    5. )
    6. class(student) <- "student"
    7. # 测试学生对象
    8. print(student)

    截图:

    1. 使用构造函数创建S3类对象(包含学生姓名、年龄、绩点),类名为student,同时编写一个类的专属方法,打印出学生绩点。如:Hi xiaoming,your GPA is 4

    代码:

    1. student <- function(name, age, gpa) {
    2.   obj <- list(
    3.     name = name,
    4.     age = age,
    5.     gpa = gpa
    6.   )
    7.   class(obj) <- "student"
    8.   return(obj)
    9. }
    10. print_gpa <- function(obj) {
    11.   cat("Hi", obj$name, ", your GPA is", obj$gpa, "\n")
    12. }
    13. # 创建学生对象
    14. xiaoming <- student("小明", 18, 4.0)
    15. print_gpa(xiaoming)

    截图:

    1. 练习使用setClass定义S4学生类student_one,并创建一个学生对象(包含学生姓名、年龄、绩点),同时使用validity进行绩点合理性判断。在控制台打印出学生信息

    代码:

    1. setClass("student_one",
    2.          slots = list(
    3.            name = "character",
    4.            age = "numeric",
    5.            gpa = "numeric"
    6.          ),
    7.          validity = function(object) {
    8.            if (object@gpa < 0 | object@gpa > 4.0) {
    9.              return("绩点不合理")
    10.            }
    11.          }
    12. )
    13. # 创建学生对象
    14. xiaohong <- new("student_one",
    15.                 name = "小红",
    16.                 age = 20,
    17.                 gpa = 3.8)
    18. # 打印学生信息
    19. print(xiaohong)

    截图:

  • 相关阅读:
    软件方法(下)第9章分析类图案例篇Part03
    Android Camera FW 里的requestId和frameId
    crypto:变异凯撒
    【目标检测】YOLOX训练王者荣耀数据集
    C#winform软件实现一次编译,跨平台windows和linux兼容运行,兼容Visual Studio原生界面Form表单开发
    从技术全景到场景实战,透析「窄带高清」的演进突破
    git stash
    【RegNet】《Designing Network Design Spaces》
    程序员需要了解的 现代散文精选翻译
    【Linux基础IO篇】用户缓冲区、文件系统、以及软硬链接
  • 原文地址:https://blog.csdn.net/weixin_66547608/article/details/139857432