已知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进行绩点合理性判断。在控制台打印出学生信息
- 已知2024年4月23日是星期五,编写一个函数day.in.a.week (x, y,z),参数x和y和z分别代表年月日,判断这一天是否存在(例如,2018年没有2月29日,也没有11月31日),如果不存在,返回日期不存在;否则计算并返回当天是星期几。星期几判断方法参照:Sys.Date() weekdays(Sys.Date())
代码:
day_in_a_week <- function(x, y, z) {
  # 判断日期是否存在
  if (!isTRUE(all.equal(as.Date(paste(x, y, z, sep="-"), format="%Y-%m-%d"), as.Date(paste(x, y, z, sep="-"))))) {
    return("日期不存在")
  } else {
    # 计算星期几
    weekday <- weekdays(as.Date(paste(x, y, z, sep="-")))
    return(paste("这一天是星期", weekday))
  }
}
# 测试函数
day_in_a_week(2024, 4, 23)截图:

- 编写程序实现冒泡排序,对向量c(4,3,2,5,6,1)进行排序。
代码:
bubble_sort <- function(vec) {
  n <- length(vec)
  for (i in 1:(n - 1)) {
    for (j in 1:(n - i)) {
      if (vec[j] > vec[j + 1]) {
        temp <- vec[j]
        vec[j] <- vec[j + 1]
        vec[j + 1] <- temp
      }
    }
  }
  return(vec)
}
# 测试冒泡排序算法
vec <- c(4, 3, 2, 5, 6, 1)
sorted_vec <- bubble_sort(vec)
print(sorted_vec)截图:

- 练习使用list列表构建一个学生对象(包含学生姓名、年龄、绩点),并运用class将对象的类设置为student。
代码:
student <- list(
  name = "张三",
  age = 20,
  gpa = 3.5
)
class(student) <- "student"
# 测试学生对象
print(student)截图:

- 使用构造函数创建S3类对象(包含学生姓名、年龄、绩点),类名为student,同时编写一个类的专属方法,打印出学生绩点。如:Hi xiaoming,your GPA is 4
代码:
student <- function(name, age, gpa) {
  obj <- list(
    name = name,
    age = age,
    gpa = gpa
  )
  class(obj) <- "student"
  return(obj)
}
print_gpa <- function(obj) {
  cat("Hi", obj$name, ", your GPA is", obj$gpa, "\n")
}
# 创建学生对象
xiaoming <- student("小明", 18, 4.0)
print_gpa(xiaoming)截图:

- 练习使用setClass定义S4学生类student_one,并创建一个学生对象(包含学生姓名、年龄、绩点),同时使用validity进行绩点合理性判断。在控制台打印出学生信息
代码:
setClass("student_one",
         slots = list(
           name = "character",
           age = "numeric",
           gpa = "numeric"
         ),
         validity = function(object) {
           if (object@gpa < 0 | object@gpa > 4.0) {
             return("绩点不合理")
           }
         }
)
# 创建学生对象
xiaohong <- new("student_one",
                name = "小红",
                age = 20,
                gpa = 3.8)
# 打印学生信息
print(xiaohong)截图:











