向量
向量赋值
x<- c(1,2,3) #常用的向量写法,意为将x定义为由元素1,2,3组成的向量。
x<- 1:10 #从1-10之间所有的整数
x<- seq(1,10,by = 0.5) #1-10之间每隔0.5取一个数(注意是逗号不是分号)
x<- rep(1:3,times=2) #1-3 重复2次
查看变量
View(变量名)
从向量中提取元素
根据位置
x[4] # x第4个元素
x[-4] # 除第4个元素之外剩余的元素
x[2:4] # 第2到4个元素
x[-(2:4)] # 除第2-4个元素
x[c(1,5)] # 第1个和第5个元素
根据值
x[x==10] # 等于10的元素
x[x<0]
x[x %in% c(1,2,5)]#存在于向量c(1,2,5)中的元素
以上返回的都是符合相应条件的元素的值
%in%
operator is used to identify if an element belongs to a vector.此处判断x中元素的值是否存在于所给向量中,如果是则返回其值
数据框
读取本地数据
a <- read.table(file = "huahua.txt", sep = "\t", header = T)#读取文件,分隔符为Tab,有表头, 并赋值给a
设置行名和列名
X<-read.csv('doudou.txt')
{9427591E-6579-4782-B04A-D4D008DAF2B4}.png.jpg
// 以第一列作为行名
X<-read.csv(file = "huahua.txt",sep = "\t",header =T,row.names=1)
{557C17DA-2B87-4E9B-8B21-240D6F107AF6}.png.jpg
数据框的导出
write.table(X,file = "yu.txt",sep = ",",quote=F)#分隔符改为逗号,字符串不加双引号(默认带有双引号)
此处的
quote
参数若为T(default),则所有字符或factor列将用双引号包围
变量的保存与重新加载
#这次没有处理完的数据下次想接着用怎么办?--学会保存和重新加载。保存的格式是RData。
save.image(file="bioinfoplanet.RData")#保存当前所有变量
save(frame1,file="frame1.RData")#保存其中一个变量
load("frame1.RData")#再次使用RData时的加载命令
提取元素
此处直接copy
X[x,y]#第x行第y列
X[x,]#第x行
X[,y]#第y列
X[y] #也是第y列
X[a:b]#第a列到第b列
X[c(a,b)]#第a列和第b列
X$列名#也可以提取列(优秀写法,而且这个命令还优秀到不用写括号的地步,并且支持Tab自动补全哦,不过只能提取一列)
$
------Extract or Replace Parts of an Object
直接使用数据框中的变量
a <-data.frame(case=paste("S",c(1:50)),values=runif(50))
plot(a$case,a$values)
image.png
data.frame
paste(..., sep = " ", collapse = NULL)
搜索时碰到的有趣的例子
但是很迷的一点是它直接将两个字符串相同编号的元素paste到一起
> paste(1:12, c("st", "nd", "rd", rep("th", 9)))
[1] "1 st" "2 nd" "3 rd" "4 th" "5 th" "6 th" "7 th" "8 th" "9 th" "10 th" "11 th" "12 th"
> paste(1:12, c("st", "nd", "rd", rep("th", 9)),sep = "",collapse = ",")
[1] "1st,2nd,3rd,4th,5th,6th,7th,8th,9th,10th,11th,12th"
# 可以用collapse参数的值将前面的字符串连接在一起
偷懒:不需要重复打出数据框名称
使用attach()
微信图片_20191220134232.png
使用with()
image.png
About
with()
with(data, expr, ...)
evaluates an R expression in an environment constructed from data, possibly modifying the original data
data
: data to use for constructing an environment.
这里认为所创建的env其实是临时的,如果不使用<<-
使得x作为全局变量,x将在此block外脱离作用域
最后贴上read.table()
function的原型
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)
网友评论