R语言基础学习4

2021-06-22  本文已影响0人  7f0a92cda77c
文件读取
csv打开方式
  1. 默认Excel
  2. 使用记事本打开
  3. Sublime软件打开大文件
  4. R语言读取-读进去就是个对象,后续操作跟原文件无关,不会同步到原文件
认识分隔符
  1. 逗号-Comma Separated Values = CSV
  2. 制表符(\t)-Tab Separated Values = TSV
  3. 空格
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()

readLines

读完下面的推荐后,我还是喜欢base版本的,随意点,可以自行选择参数
https://csgillespie.github.io/efficientR/input-output.html
这个网站-提高R语言编程效率的,不过需要进阶后再看

https://www.jianshu.com/p/4ea320c0dcc6
https://csgillespie.github.io/efficientR/input-output.html

上一篇下一篇

猜你喜欢

热点阅读