1 键盘输入(最简单)
1.1 实现效果
age gender weight
1 25 m 166
2 30 f 115
3 18 f 120
1.2 实现方法一read.table()
- 先创建名为data.txt的字符串;
- 用函数read.table()创建数据框data.1;
(该方法可以让我们把数据嵌入到R代码中去)
data.txt <- "
age gender weight
25 m 166
30 f 115
18 f 120
"
data.1 <- read.table(header = T, text = data.txt, sep = " ")
print(data.1)
1.3 实现方法二fix()
- 用函数fix()创建一个数据框data.2;
- 直接键入;
data.2 <- data.frame(age=numeric(0), gender=character(0), weight=numeric(0))
#创建一个名为data.2的数据框,框中有age/gender/weight三个值
fix(data.2)
print(data.2)
2 从文本文件读入(最常用)*
2.1 文件格式
- 文件名.csv
- 特点:逗号分隔,可以用各种软件打开
2.2 文件读入函数——read.table()
- 全部参数
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)
- 关键参数
关键参数 | 参数 | 描述 | |||
file | 指定要被读入的带分隔符的文本文件 | ||||
header | 一个表示文件是否在第一行包含了变量名的逻辑型变量 | ||||
sep | 分开数据值的分隔符。(1)默认是sep=" ",代表了一个或多个空格、制表符、换行或回车;(2)使用sep=","来读取以逗号做分隔符的文件(csv文件);(3)使用sep="\t"来读取用制表符分隔行内数据的文件 | ||||
col.names | 如果数据文件的第一行不包含变量名(header=FALSE),可以用col.names指定一个包含变量名的字符向量。如果header=FAISE同时col.names未指定,变量会被分别命名为V1、V2等等 | ||||
row.names | 一个用于 指定一个或多行标记符的可选参数 | ||||
na.strings | 可选的用于表示缺失的字符向量。比如说,na.strings=c("-9","-7")把-9和-7在读取数据时转换成NA | ||||
colClasses | 可选的分配到每一列的类向量。(1)默认是ccolClasses=NA(不工作状态),文件中的数字读进去就是数字,字符串读进去就是factor;(2) 当colClasses=NULL时,所有列都不读取; (3) colClasse能接受向量实现只读某一列。例:`a<-read.table("D:\B011.txt",colClasses=c("character","numeric",rep("NULL",2)),header=T)`#读取文件D:\B011.txt的前两列,第一列为字符,第二列为数字。 | ||||
quote | 用于对有特殊字符的字符串划定界限的字符串。默认值是双引号""或单引号'' | ||||
skip | 读取数据前跳过的行的数目。(该选项在跳过头注释时很有用) | ||||
stringAsFactors | 一个逻辑变量,标记处字符向量是否需要转化成因子。默认值是TURE,除非它被colClasses所覆盖。处理大型文本文件的时候,设置成stringsAsFactors=FALSE可以提升处理速度。 | ||||
text | 一个指定文字进行处理的字符串,如果text被设置了,file应该被留空(同前文键盘输入的例子) | ||||
2.3 示例
- 一个生物数据文件(前7行为主体数据的注释,第一列为基因名)
1 直接用函数read.table()读取
(效果不理想)
data.3 <- read.table("D://R/R工作目录/example.csv", header = T, quote = "\", sep = ",")
print(data.3[1:10,1:9])
> print(data.3[1:10,1:9])
X Related.subtype Expression.in.subtype NKI_4 NKI_6 NKI_7 NKI_8 NKI_9 NKI_11
1 ER status 1 1 0 0 1 1
2 Histological grade 3 2 1 3 3 3
3 BRCA mutation 0 0 0 0 0 0
4 Metastasis 0 0 0 0 0 0
5 Lymph node status 0 0 0 0 0 0
6 Treatment 0 0 0 0 0 0
7 Study NKI NKI NKI NKI NKI NKI
8 SFRP1 (NM_003012) HER2-enriched down -0.306 -0.114 -0.026 0.263 -0.095 -0.213
9 TMEM45B (Contig50838_RC) basal-like down -0.994 -0.398 0.649 -0.231 0.341 0.701
10 PGR (NM_000926) luminal B no difference 0.724 0.054 0.183 -0.399 0.1 -0.178
2 修改代码,加上skip和row.name两个参数
(更加条理)
> data.4 <- read.table("D://R/R工作目录/example.csv", header = T, skip = 7, sep = ","quote = "\"", row.names = "Study")
#(skip=7)跳过前7行,(header=T)存在第一行为变量名,(row.names="Study")以Study列为行的变量名
> print(data.4[1:10, 1:9])
X X.1 NKI NKI.1 NKI.2 NKI.3 NKI.4 NKI.5 NKI.6
SFRP1 (NM_003012) HER2-enriched down -0.306 -0.114 -0.026 0.263 -0.095 -0.213 0.332
TMEM45B (Contig50838_RC) basal-like down -0.994 -0.398 0.649 -0.231 0.341 0.701 -1.052
PGR (NM_000926) luminal B no difference 0.724 0.054 0.183 -0.399 0.100 -0.178 -0.432
MDM2 (NM_002392) luminal B no difference -0.086 0.195 -0.191 0.132 0.272 0.041 -0.318
MKI67 (NM_002417) luminal B down -0.027 0.016 -0.034 0.074 -0.139 0.058 NA
MYBL2 (NM_002466) luminal A down 0.103 -0.103 -0.044 0.365 -0.057 -0.055 0.267
CDH3 (NM_001793) luminal B down -0.396 -0.770 -0.077 -0.165 -0.518 -0.676 0.861
PTTG1 (NM_021000) luminal A down 0.123 -0.083 -0.279 0.127 -0.092 -0.008 0.581
BAG1 (NM_004323) HER2-enriched no difference -0.134 0.178 0.061 -0.238 -0.013 -0.292 -0.230
EXO1 (NM_003686) luminal A down -0.101 -0.248 -0.170 0.403 -0.208 -0.063 0.186
>
3 常用的数据操作函数
函数 | 用途 |
---|---|
length () | 显示对象中元素/成分的数量 |
dim() | 显示某个对象的维度 |
str() | 显示某个对象的结构 |
class() | 显示某个对象的类或类型 |
names() | 显示某对象中各成分的名称 |
c() | 将对象合并入一个向量 |
cbind() | 按列合并对象 |
rbind() | 按行合并对象 |
object() | 输出某个对象 |
head() | 输出某个对象的开始部分 |
tail() | 输出某个对象的最后部分 |
ls() | 输出当前的所有对象 |
rm() | 移除某个对象,一般在工作开始时用rm(list=ls())删除工作环境中的几乎所有对象 |
fix() | 直接编译对象 |