• R语言教程课后习题答案(持续更新中~~)


    R语言教程网址如下

    https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/index.html

    目录

    source()函数可以运行保存在一个文本文件中的源程序

    R向量下标和子集

    数值型向量及其运算

    日期功能

    R因子类型


    source()函数可以运行保存在一个文本文件中的源程序

    如下内容保存在文件ssq.r中

    1. sum.of.squares <- function(x){
    2. sum(x^2)
    3. }

    用source()命令运行

    source("ssq.r")

    可以运用sum.of.squares(1:5)

    sum.of.squares(1:5)

    R向量下标和子集

    class.csv

    1. name,sex,age,height,weight
    2. Alice,F,13,56.5,84
    3. Becka,F,13,65.3,98
    4. Gail,F,14,64.3,90
    5. Karen,F,12,56.3,77
    6. Kathy,F,12,59.8,84.5
    7. Mary,F,15,66.5,112
    8. Sandy,F,11,51.3,50.5
    9. Sharon,F,15,62.5,112.5
    10. Tammy,F,14,62.8,102.5
    11. Alfred,M,14,69,112.5
    12. Duke,M,14,63.5,102.5
    13. Guido,M,15,67,133
    14. James,M,12,57.3,83
    15. Jeffrey,M,13,62.5,84
    16. John,M,12,59,99.5
    17. Philip,M,16,72,150
    18. Robert,M,12,64.8,128
    19. Thomas,M,11,57.5,85
    20. William,M,15,66.5,112
    1. #取出其中的name和age列到变量name和age中
    2. d.class <- read.csv("class.csv", header=TRUE, stringsAsFactors=FALSE)
    3. name <- d.class[,"name"]
    4. age <- d.class[,"age"]

    1.求出age中第3, 5, 7号的值

    1. age[c(3,5,7)]
    2. 输出 [1] 14 12 11

    2.用变量age, 求出达到15岁及以上的那些值

    1. age[age>=15]
    2. 输出 [1] 15 15 15 16 15

    3.用变量name和age, 求出Mary与James的年龄

    1. mary_age <- age[name == "Mary"]
    2. james_age <- age[name == "James"]
    3. > mary_age
    4. [1] 15
    5. > james_age
    6. [1] 12

    4.求age中除Mary与James这两人之外的那些人的年龄值,保存到变量age1中

    1. age1<-age[name!="Mary" & name!="James"]
    2. > age1
    3. [1] 13 13 14 12 12 11 15 14 14 14 15 13 12 16 12 11 15

    5.假设向量x长度为n, 其元素是{1,2,…,n}的一个重排。 可以把x看成一个i到x[i]的映射(i在{1,2,…,n}中取值)。 求向量y, 保存了上述映射的逆映射,即: 如果x[i]=j, 则y[j]=i

    1. n <- length(x)
    2. y <- vector("integer", length = n)
    3. for (i in 1:n) {
    4. j <- x[i]
    5. y[j] <- i
    6. }

    数值型向量及其运算

    显示1到100的整数的平方根和立方根

    1. for (i in 1:100) {
    2. sqrt_val <- sqrt(i)
    3. cubert_val <- i^(1/3)
    4. print(paste("整数:", i, " 平方根:", sqrt_val, " 立方根:", cubert_val))
    5. }

     生成[0,1]区间上等间隔的100个格子点存入变量x中

    1. x <- seq(0, 1, length.out = 100)
    2. print(x)

    日期功能

    1. #dates.csv中包含如下内容
    2. "出生日期","发病日期"
    3. "1941/3/8","2007/1/1"
    4. "1972/1/24","2007/1/1"
    5. "1932/6/1","2007/1/1"
    6. "1947/5/17","2007/1/1"
    7. "1943/3/10","2007/1/1"
    8. "1940/1/8","2007/1/1"
    9. "1947/8/5","2007/1/1"
    10. "2005/4/14","2007/1/1"
    11. "1961/6/23","2007/1/2"
    12. "1949/1/10","2007/1/2"
    1. date1 <- dates.tab[,'出生日期']
    2. date2 <- dates.tab[,'发病日期']

    1.把date1、date2转换为R的POSIXct日期型

    1. dates_converted1 <- as.POSIXct(date1, format = "%Y/%m/%d")
    2. > dates_converted
    3. [1] "1941-03-08 CST" "1972-01-24 CST" "1932-06-01 CST" "1947-05-17 CDT"
    4. [5] "1943-03-10 CDT" "1940-01-08 CST" "1947-08-05 CDT" "2005-04-14 CST"
    5. [9] "1961-06-23 CST" "1949-01-10 CST"
    6. dates_converted2 <- as.POSIXct(date2, format = "%Y/%m/%d")
    7. > dates_converted
    8. [1] "2007-01-01 CST" "2007-01-01 CST" "2007-01-01 CST" "2007-01-01 CST"
    9. [5] "2007-01-01 CST" "2007-01-01 CST" "2007-01-01 CST" "2007-01-01 CST"
    10. [9] "2007-01-02 CST" "2007-01-02 CST"

    2.date1中的各个出生年

    1. library(lubridate)
    2. date1 <- c("1941/3/8", "1972/1/24", "1932/6/1", "1947/5/17", "1943/3/10",
    3. "1940/1/8", "1947/8/5", "2005/4/14", "1961/6/23", "1949/1/10")
    4. birth_years1 <- year(as.Date(date1, format = "%Y/%m/%d"))
    5. print(birth_years1)
    6. birth_years2 <- year(as.Date(date2, format = "%Y/%m/%d"))
    7. print(birth_years2)

     3. 计算发病时的年龄,以周岁论(过生日才算)

    1. ages <- year(date2) - year(date1)
    2. for (i in seq_along(ages)) {
    3. if (month(date2[i]) < month(date1[i])) {
    4. ages[i] <- ages[i] - 1
    5. }
    6. }
    7. print(ages)
    8. #输出
    9. [1] 65 35 74 59 63 67 59 1 45 58

    4.把date2中发病年月转换为’monyy’格式,这里mon是如FEB这样英文三字母缩写, yy是两数字的年份

    1. > formatted_date <- format(as.Date(date2), "%b%y")
    2. >
    3. > formatted_date
    4. [1] "1月07" "1月07" "1月07" "1月07" "1月07" "1月07" "1月07" "1月07" "1月07"
    5. [10] "1月07"

    R因子类型

    1.把sex变量转换为一个新的因子,F显示成“Female”,M显示成“Male”

    factor(sex, levels = c("F", "M"), labels = c("Female", "Male")

  • 相关阅读:
    经纬恒润数字钥匙,让出行更简单
    SMILES:化学结构的线性表示方法
    【python】程序常见异常&异常处理方法
    一起来看看AMD最新显卡驱动22.11.1!
    2.树莓派4b+ubuntu18.04(ros版本melodic)+arduino mega自制两轮差速小车,实现建图导航功能
    数据结构与算法系列一之整数、数组及字符串
    《进阶篇第9章》学习vuex知识点后练习:把求和案例改成getters
    NoSQL数据库使用场景以及架构介绍
    web前端三大主流框架
    C语言——实用调试技巧——第1篇——(第22篇)
  • 原文地址:https://blog.csdn.net/weixin_69884785/article/details/132522064