R语言基础学习4
2021-06-22 本文已影响0人
7f0a92cda77c
文件读取
csv打开方式
- 默认Excel
- 使用记事本打开
- Sublime软件打开大文件
- R语言读取-读进去就是个对象,后续操作跟原文件无关,不会同步到原文件
认识分隔符
- 逗号-Comma Separated Values = CSV
- 制表符(\t)-Tab Separated Values = TSV
- 空格
R语言读取函数
test <- read.table("ex1.txt",header = T)#读取txt格式,默认是header = F
test <- read.csv("ex2_B cell receptor signaling pathway.csv",row.names = 1,check.names = F)#这里默认header = T
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
#check.names = F,防止R语言修改你的特殊符号
read.csv(file, header = TRUE, sep = ",", quote = "\"",
dec = ".", fill = TRUE, comment.char = "", ...)
文件导出,成为表格文件
数据导出.Rdata-R特有的数据格式
# 保存为Rdata
save(test,file = "tes.Rdata")
# 加载class.Rdata,查看数据类型
load("tes.Rdata")
base包
read_*
导出数据
if(!require("rio")) install.packages("rio")
if(!require("readr")) install.packages("readr")
if(!require("data.table")) install.packages("data.table")
if(!require("WDI")) install.packages("WDI")
library(rio) #import(); import_list(); export()
library(readr)
library(data.table)#fread()
library(WDI)
对读取的数据每一列元素进行了比较
这个函数写得挺好的dfc代表了作者对data_frame_column进行每一列的性质探索
dfc =function(kk,name=F){#kk是任意的读者输入的数据,name是形式参数-已经默认了是FALSE
kk=data.frame(kk)#就是把这个输入数据作为数据框来处理
x=vector()#vector produces a vector of the given length and mode.未知的,需要后面给
n=0#从0开始给出值
for(i in colnames(kk)){
n=n+1#开始赋予
x[[n]]=class(kk[,i])#这个是核心-判断数据框kk的每一列元素的类型,进行循环
}
if(name)names(x)=colnames(kk)#自己选择,需要输入列名否,默认是不输入的
x#输出x
}
test <- read.csv("ex2_B cell receptor signaling pathway.csv",row.names = 1,check.names = F)
普通读取法
x=readLines("ex2_B cell receptor signaling pathway.csv")
if(!require(tidyr)) install.packages("tidyr")
if(require(stringr))install.packages("stringr")
library(tidyr)
library(stringr)
n=str_count(x[1],",")#计算总共有多少列,排除了第一列是作为行名,所以数据列是n+1
dfx=data.frame(x=x) %>%
tidyr::separate(x,into=paste0("V",1:(n+1)), sep = ",")
readLines()这个函数将每行作为一个字符串,读取的结果是一个大的字符串向量。先读进来,转化为一个"一列的数据框",然后再分割
关于分割,推荐tidyr::separate()
读完下面的推荐后,我还是喜欢base版本的,随意点,可以自行选择参数
https://csgillespie.github.io/efficientR/input-output.html
这个网站-提高R语言编程效率的,不过需要进阶后再看
https://www.jianshu.com/p/4ea320c0dcc6
https://csgillespie.github.io/efficientR/input-output.html