美文网首页
R语言作业·初级

R语言作业·初级

作者: BioJournal_Link | 来源:发表于2019-08-07 13:52 被阅读0次

    【作业1】当前工作目录是什么路径

    getwd()#获取当前工作目录
    

    【作业2】新建6个向量,基于不同的原子类型。(重点是字符串,数值,逻辑值)

    character_vector <- c("a","b","c","d")#字符型向量
    number_vector <- c(2,3,4,5,6,7)#数值型向量
    logical_vector <- c(T,F,T,F,F)#逻辑型向量
    LOGICAL_VECTOR <- C(TRUE,TRUE,FALSE)#报错
    LOGICAL <- c(TRUE,TRUE,FALSE)#无报错
    

    【不解2.1】
    创建逻辑型向量:LOGICAL_VECTOR <- C(TRUE,TRUE,FALSE),
    [error]:Error in C(TRUE, TRUE, FALSE) : 不能把对象解释成因子,
    发现创建向量时,写成了大C而不是小c。
    【不解2.2】新概念——原子向量
    [笔记]在R For Data Science这本书,有对向量概念做了详细的介绍:
    向量主要有两种:
    (1)原子向量:逻辑型、 整型、 双精度型、 字符型、 复数型和原始型。
    ①整型和双精度型向量又统称为数值型向量。
    ②原子向量中的各个值都是同种类型的。
    (2)列表,有时又称为递归向量,因为列表中也可以包含其他列表。
    列表中的各个值可以是不同类型的。
    【不解2.3】新概念——整型,双精度型,复数型和原始型(后面两种该书未介绍)
    (1)双精度型:双精度型是近似值。
    ①双精度型表示的是浮点数,不能由固定数量的内存精确表示。
    ②这意味着你应该将所有双精度数当成近似值。
    (2)整数型:如果想要创建整型数值,可以在数字后面加一个 L。
    查看向量类型的函数区别:

    class(number_vector)#"numeric"
    typeof(number_vector)#"double"
    integer_vector <- c(1L,2L,3L,4L)
    typeof(integer_vector)#"integer"
    typeof(1:10)#"integer"
    typeof(2)#"double"
    

    [新知]class和typeof的区别是typeof可以区分数值型向量是整数型和双精度型。
    [发现]原来number_vector <- c(2,3,4,5,6,7),创建的是双精度型向量。

    【作业3】新建一些数据结构,比如矩阵,数组,数据框,列表等,重点是数据框,矩阵

    my_matrix <- matrix(1:10,nrow=5,ncol=2)
    my_array <- array(1:24,c(2,3,4))
    my_dataframe <- data.frame(a=c(1:10),b=paste("q",c(1:10),sep = "."),c=1:10>3)
    my_list <- list(my_matrix,my_array,my_dataframe)
    class(my_matrix)#"matrix"
    class(my_array)#"array"
    class(my_dataframe)#"data.frame"
    class(my_list)#"list"
    

    【作业4】在你新建的数据框进行切片操作,比如首先取第1,3行, 然后取第4,6

    my_df_t <- t(my_dataframe)#因为初建的数据框不符合题目要求,所以行列转置一下
    my_df_t[c(1,3),]
    my_df_t[,c(4,6)]
    my_dataframe[5:8,1:2]
    

    【作业5】
    使用data函数来加载R内置数据集rivers,描述它。
    并且可以查看更多的R语言内置的数据集。

    data(rivers)
    class(rivers)
    dim(rivers)#"NULL"
    length(rivers)
    fivenum(rivers)
    ?fivenum
    summary(rivers)
    quantile(rivers)
    tail(sort(rivers))#查看最长的六条河的长度
    

    DATA SCIENCE FOR R 这本书教了用数字可视化技术去进行数据探索
    尝试着用作图去探索数据

    boxplot(rivers)
    barplot(rivers)
    barplot(sort(rivers))
    hist(rivers)
    head(rivers)
    tail(order(rivers))
    rivers[tail(order(rivers))[6]]
    

    【问题6】下载 https://www.ncbi.nlm.nih.gov/sra?term=SRP133642 里面的 RunInfo Table文件读入到R里面,了解这个数据框,多少列,每一列都是什么属性的元素。(参考B站生信小技巧获取runinfo table)

    getwd()
    sc <- read.table(file = "SraRunTable.txt",header = T,sep = "\t")
    #网页链接打不开,只能下载题目的下载链接,
    class(sc)#dataframe
    dim(sc)#768行31列
    str(sc)#查看各列属性
    

    【问题7】下载 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE111229 里面的样本信息sample.csv读入到R里面,了解这个数据框,多少列,每一列都是什么属性的元素。

    sample <- read.csv(file = "sample.csv",header = T)
    #sample <- read.csv(file = "sample.csv",header = T,sep = ",")
    class(sample)#dataframe
    dim(sample)#768行12列
    str(sample)#查看各列属性
    

    【问题8】把前面两个步骤的两个表(RunInfo Table 文件,样本信息sample.csv)关联起来,使用merge函数。

    accession <- sample$Accession
    sample_name <- sc$Sample_Name
    table(a==b)#全部为true,说明这两列内容都一样
    merge <- merge(sc,sample,by.y = "Accession",by.x = "Sample_Name")
    dim(merge)#42列
    

    相关文章

      网友评论

          本文标题:R语言作业·初级

          本文链接:https://www.haomeiwen.com/subject/bpsodctx.html