从零开始进行单倍型分析之R语言进阶篇(下)

从零开始进行单倍型分析

(一)基础知识篇
(二)分析工具篇
(三)R语言基础篇之入门(上)(只讲需要的)
(四)R语言基础篇之进阶篇(下)(只讲需要的)
(五)geneHapR之数据准备篇(上)(只讲需要的)
(六)数据准备及软件实操篇
(七)结果诠释篇

摘要:本文主要介绍了 R 语言中变量的保存与导入、表格的导入与输出以及图片的保存相关内容。图片保存分为基础图形系统和 ggplot2 包下的情况,基础图形系统可使用pdf()、png()等函数保存为不同格式的图片,并能调整参数;ggplot2 包中可使用ggsave()函数保存图片;另外,还介绍了eoffice的简单使用。最后,本文介绍了如何获取查看R对象存储的全部或部分属性信息。

一、R语言IO/输入输出/导入导出

变量的保存与导入

变量的保存
  • 使用save()函数
    • 基本用法save()函数可以将一个或多个 R 对象保存到指定的文件中。例如,如果你有变量xyz,可以使用save(x, y, z, file = "myData.RData")将这些变量保存到名为myData.RData的文件中。
    • 保存工作空间:可以直接使用save.image()来保存当前工作空间中的所有变量,它等同于save(list = ls(all.names = TRUE), file = ".RData"),通常默认保存为当前工作目录下的.RData文件。
  • 使用saveRDS()函数
    • 特点saveRDS()函数将单个 R 对象保存为一个序列化的 RDS 文件。与save()不同,saveRDS()只保存一个对象,并且不会保存对象的名称。例如,saveRDS(myObject, "myObject.rds")myObject保存到myObject.rds文件中。
重新导入变量
  • 对于save()保存的.RData文件
    使用load()函数:load("myData.RData")将把之前使用save()函数保存到myData.RData文件中的所有变量重新加载到当前工作空间中。
  • 对于saveRDS()保存的RDS文件
    使用readRDS()函数:例如,myObject <- readRDS("myObject.rds")将从myObject.rds文件中读取并恢复之前保存的对象。
注意事项
  • 路径问题
    在保存和加载文件时,要注意文件路径的正确性。可以使用绝对路径来确保准确性,或者在相对路径中确保当前工作目录的设置符合预期。
  • 对象覆盖
    当重新导入变量时,如果当前工作空间中已经存在同名的变量,加载操作可能会覆盖原有的变量。在执行加载操作前,最好检查当前工作空间以避免意外的数据覆盖。

表格的导入与输出

此处表格就是指简单的表格,没有其他含义。

导入表格
  • 从 CSV 文件导入
    • read.csv () 函数
      • 基本用法:read.csv("file.csv")是最常见的导入 CSV 文件的方式,它会将文件中的数据读取到一个数据框中。其中,file.csv是文件路径(相对路径或绝对路径)。
      • 参数设置:
        • header:默认值为TRUE,表示第一行作为列名。如果设置为FALSE,则 R 会自动为列生成V1V2等默认列名。例如,read.csv("file.csv", header = FALSE)
        • sep:指定分隔符,默认是逗号","。如果文件使用其他分隔符(如分号";"),可以通过read.csv("file.csv", sep = ";")来读取。
        • stringsAsFactors:默认值为TRUE,表示将字符型数据转换为因子(factor)。在现代数据分析中,通常设置为FALSE以避免不必要的转换,如read.csv("file.csv", stringsAsFactors = FALSE)
    • read.csv2 () 函数
      • 适用场景:在一些地区,使用逗号作为小数点,分号作为分隔符。read.csv2()专门用于读取这种格式的 CSV 文件。例如,read.csv2("file.csv")
  • 从 Excel 文件导入
    • readxl 包
      • 安装:使用install.packages("readxl")进行安装。
      • 函数:
        • read_excel():可以读取.xlsx.xls格式的 Excel 文件。例如,library(readxl); data <- read_excel("file.xlsx")
        • 可以指定工作表:read_excel("file.xlsx", sheet = "Sheet1")读取指定名称的工作表;read_excel("file.xlsx", sheet = 2)按工作表的索引(从 1 开始)读取。
  • 从其他格式文件导入
    • 从文本文件导入
      • read.table():用于读取一般的文本文件,格式相对灵活。例如,read.table("file.txt")
      • read.delim():专门用于读取以制表符\t分隔的文本文件,如read.delim("file.txt")
    • 从固定宽度格式文件导入
      • read.fwf():用于读取固定宽度格式的文件,需要指定每个字段的宽度。例如,read.fwf("file.fwf", widths = c(10, 20, 15)),其中widths参数指定了每个字段的宽度。
导出表格
  • 导出为 CSV 文件
    • write.csv () 函数
      • 基本用法:write.csv(data, "newfile.csv")将数据框data导出为newfile.csv文件。
      • 参数:
        • row.names:默认值为TRUE,会导出数据框的行名。通常设置为FALSE,如write.csv(data, "newfile.csv", row.names = FALSE),以避免在第一列额外导出行名。
  • 导出为 Excel 文件
    • openxlsx 包和 xlsx 包
      • 安装:install.packages("openxlsx")install.packages("xlsx")
      • 使用:
        • 使用openxlsx包时,library(openxlsx); write.xlsx(data, "file.xlsx")可将数据框data导出到file.xlsx文件。
        • xlsx包中的write.xlsx()函数用法类似。
  • 导出为其他格式
    • 导出为文本文件
      • write.table():可以将数据框导出为文本文件,通过调整参数控制分隔符等格式。例如,write.table(data, "file.txt", sep = "\t")以制表符分隔导出。
    • 固定宽度格式
      • 可以根据固定宽度格式的要求,自定义函数或者使用特定领域的包来进行导出,但这种情况相对较少。

二、在R中保存图片

基础图形系统(Base Graphics)下的图片保存

  1. 使用pdf()函数保存为 PDF 文件
    • 基本用法:pdf("filename.pdf")开启一个 PDF 图形设备,之后绘制的所有图形都会被保存到这个文件中,直到使用dev.off()关闭设备。例如:
pdf("myplot.pdf")
plot(1:10)
dev.off()
  • 参数调整:
    • widthheight:可以指定页面的宽度和高度,单位为英寸。例如,pdf("myplot.pdf", width = 6, height = 4)
    • onefile:默认值为TRUE,表示所有图形都保存在一个 PDF 文件中;如果设置为FALSE,则每个图形会创建一个单独的 PDF 文件。
  1. 使用png()函数保存为 PNG 文件
    • 基本用法:png("filename.png")打开一个 PNG 图形设备,例如:
png("myplot.png")
hist(rnorm(100))
dev.off()
  • 参数调整:
    • widthheight:指定图像的像素宽度和高度,例如,png("myplot.png", width = 800, height = 600)
    • res:设置图像的分辨率,默认值通常为 72dpi。例如,png("myplot.png", res = 300)可提高分辨率。
  1. 使用jpeg()函数保存为 JPEG 文件
    • 用法与png()类似,如jpeg("filename.jpeg")打开 JPEG 图形设备,然后绘制图形,最后用dev.off()关闭设备。
    • 参数也包括widthheightres等,可根据需要调整图像质量和尺寸。
  2. 使用bmp()函数保存为 BMP 文件
    • 同样,bmp("filename.bmp")开启 BMP 图形设备,例如:
bmp("myplot.bmp")
boxplot(1:10)
dev.off()
  • 参数有widthheight等,用于控制图像尺寸。

grid 图形系统和 ggplot2 包下的图片保存

  1. 在 ggplot2 中使用ggsave()函数
    • 基本用法:如果已经创建了一个 ggplot 对象(假设为p),可以直接使用ggsave("filename.png", p)将图形保存为指定格式(这里是 PNG)的文件。
    • 格式自动识别:ggsave()会根据文件名的后缀自动识别保存的格式,支持多种格式,如 PDF、PNG、JPEG 等。
    • 参数调整:
      • widthheightdpi:与基础图形系统中的参数类似,用于控制图像的尺寸和分辨率。例如,ggsave("myplot.pdf", p, width = 6, height = 4)

使用eoffice保存图片

eoffice 是一个 R 语言的包,它可以用于将图片直接导出至 pptx 或 docx 文件(该package是近几年新出的,可能会有小问题,一般不会碰到;如有,自行度娘之)。
尽管如此,该package非常强大,将图片导出到pptx或docx之后可以非常自由的修改(请务必遵守学术规范使用之)。

  • 保存至 ppt:使用topptx函数,例如topptx(filename = "mtcars.pptx")
  • 保存至 docx:使用todocx函数,例如todocx(filename = "mtcars.docx")
  • 支持多种方式输出图片,例如可以先使用ggplot绘制图片,然后通过topptx输出,如topptx(p, filename = "mtcars.pptx"), width = 6, height = 4),其中p是使用ggplot绘制的图片。
  • 支持表格从 ppt 或者 word 的输出和读取,例如totable(head(mtcars), filename = "mtcars.pptx")
  • 支持输出多种图片格式,例如tofigure(p, filename = "mtcars.pdf")

三、R语言对象的class属性

查看class属性

  • 使用class()函数:这是最直接的方法,将对象作为参数传递给class()函数即可查看其类属性。例如,对于一个数据对象x,可以使用class(x)来查看它所属的类。

修改class属性

  • 直接赋值(不推荐,可能导致不可预测的结果):在某些情况下,可以尝试直接对class属性进行赋值来修改对象的类。例如,对于一个对象obj,可以尝试class(obj) <- "newClass"。但这种方法非常危险,因为它可能破坏对象的内部结构,导致对象的行为不符合其新的类定义,并且在复杂的对象(如 S3、S4 或 R6 对象)中可能根本不起作用或者引发错误。
  • 转换函数(推荐):对于特定类型的对象,可以使用相应的转换函数来改变其类属性。例如:
    • 数据类型转换:使用as.numeric()as.character()as.logical()等函数将对象转换为不同的数据类型,这些函数在转换数据类型的同时也改变了对象的类属性。例如,x <- as.character(x)将把x的类属性从原来的数值型或其他类型转换为字符型。
    • 特定类的转换:对于一些特殊的类,如将数据框转换为矩阵可以使用as.matrix()函数,df <- as.matrix(df)将把数据框df转换为矩阵,并相应地改变其类属性。

需要注意的是,在修改class属性时,应确保新的类定义与对象的实际结构和内容相匹配,以保证对象在新的类下能够正常工作。随意修改class属性可能导致错误,尤其是在处理复杂的面向对象编程结构(如 S4 和 R6 对象)时。

四、R语言中的attributes()

在 R 语言中,attributes()函数是一个非常重要的函数,它用于获取或设置对象的属性(Attributes)。

属性是与对象相关联的额外信息或元数据,可以提供关于对象的更多描述或特征。这些属性可以包括对象的类、名称、维度、标签等。

当我们使用attributes()函数时,它会返回一个列表,其中包含了对象的所有属性。每个属性都是一个键值对,键表示属性的名称,值表示属性的值。

例如,对于一个数据框(Data Frame)对象,它的常见属性可能包括列名(names)、行名(row.names)、类(class)等。通过attributes()函数,我们可以获取这些属性的值,并进行进一步的处理或分析。

下面是一个更详细的示例:

# 创建一个数据框
df <- data.frame(x = 1:3, y = 4:6, z = 7:9)

# 获取数据框的属性
attrs <- attributes(df)

# 打印属性列表
print(attrs)

在上述示例中,我们创建了一个名为df的数据框,然后使用attributes(df)获取了它的属性,并将其存储在attrs变量中。最后,我们打印出了属性列表。

通过查看属性列表,我们可以了解到数据框的一些重要信息,例如列名、行名等。此外,我们还可以使用attr()函数来单独获取或设置某个特定属性的值。

例如,如果我们想获取数据框的列名,可以使用以下代码:

col_names <- attr(df, "names")
print(col_names)

同样,如果我们想设置某个属性的值,也可以使用attr()函数,例如:

attr(df, "comment") <- "This is a data frame example."

总之,attributes()函数和attr()函数在 R 语言中提供了一种方便的方式来管理和操作对象的属性,这对于数据处理和分析非常有用。
在geneHapR中,有些时候对象,比如:hapResult、hapSummary、hapNet,只打印出一些基本信息,但其中往往包含了十分丰富的内容,此时,可以通过attributes()获取所有属性,或使用attr()函数获取希望查看的属性值,比如:查看hapNet每个不同类群中各单倍型的频率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syhz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值