r
as.character("a")
as.logical(TRUE)
as.character(4)
c(2,3,5,6,9)
c("a","f","k")
1:5
rep("x",time=3)
seq(from=3,to=21,by=3)
rnorm(n=3)
paste0(rep("x",times=3),1:3)
paste0(rep("x",times=3),1:3,rep("a",time=3))
x<-c(1,3,5,1)
x
x <- c(2,3,6,5);x
#以下为练习题
#生成1-15之间所有偶数
seq(from=2,to=15,by=2)
#生成向量,内容为:“student2/4/6/8/10/12/14”
paste0(rep("student",times=7),seq(from=2,to=14,by=2))
b <- seq(from=2,to=14,by=2);paste0(rep("student",times=length(b)),b)
#将两种不同类型的数据用c()组合在一起,看输出结果。
y <- c(1,2,3,"a","c","e");y
x <- c("a","b","c",TRUE,FALSE);x
z <- c(1,2,3,4,TRUE,FALSE);z
A <- c(1,2,3,4,TRUE,FALSE);A
a <- c(1,0,1,TRUE,FALSE);a
#字符型+数值型/逻辑型=字符型;数值型+逻辑型=数值型(TRUE=1,FALSE=0,NULL=空,NA=NA);转换原则:尽可能保留内容。
k1 <- rnorm(12);k1
plot(k1)
k2 <- rep(c("a","b","c","d"),each=3);k2
boxplot(k1~k2)
*补充信息
并非所有NA都是逻辑型。
*数据类型的判断和转换
is族函数,判断,返回值为TRUE或FALSE
is.numeric(4) - TRUE
is.character(a) - FALSE
is.logical()
格式和内容都很重要
as族函数实现数据类型之间的转换
as.numeric/logical/character():将数据转换为数字/逻辑/字符型
*多个数据如何组织?
数据结构:向量<数据框<矩阵<列表
数据框约等于“表格”,列有要求,每行只能有一种数据类型;不是文件
数据框单独拿出的一列为向量,视为一个整体。
一个向量只能由一种数据类型。
乱码解决方法:HELP-Reopen with encoding-UTF-8
向量的生成:
(1) 用c()逐一放到一起。
(2) 连续的数字用“:”
(3) 有重复的用rep();有规律的序列用seq();随机数用rnorm()。(小数点后默认显示八位)
(4) 通过组产生更为复杂的向量。paste0(rep("x",times=3),1:3)
对单个向量进行的操作
(1) 赋值:x<- c(1,3,5,1)#规范的赋值符号
“=”可以替代“>-”#随意的写法
(x <- c(1,3,5,1))#赋值和输出一同实现
标准:x <- c(1,3,5,1);x
x为变量名,可用:大小写字母(但不建议用c);字母+数字可以,数字+字母报错;“_”“.”可用,“ ”“-”为特殊字符,不被允许;不可用中文做变量名称
两句或多句代码写在同一行使用“;”
(2) 简单数值计算:x+1/log(x)/sqrt(x)
(3) 比较运算,生成逻辑值向量:x>3/x==3
(4) 初级统计:
max(x) #最大值
min(x) #最小值
mean(x) #平均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #求和
length(x) #向量长度(元素个数)
unique(x) #去掉重复元素(仅保留一个)
duplicated(x) #判断是否发生重复(仅在第一次发生重复时输出TRUE)
table(x) #重复值统计(即存在哪些取值,各出现几次)
sort(x) #对向量内元素进行排序(默认升序;?sort查看帮助文档,默认值写在USAGE中)
sort(x,decreasing = T) #降序排列
#paste0()函数输出值跟随最大数字
对两个向量进行的操作(一一对应(长度一致时))
(1) 比较运算,生成等长的逻辑向量。e.g.x=c(1,3,5,1);y=c(3,2,5,6);x==y 1 F F T F
(2) 数学计算 x+y 1 4 5 10 7
(3) 连接 paste(x,y,sep=",") 1 1,3 3,2 5,5 1,6
#paste0(x,y) = paste(x,y,sep="")
当长度不一致,且发生等位运算时,较短向量元素发生循环补齐。
(4) 交集、并集、差集
intersect(x,y) 1 3 5
union(x,y) 1 1 3 5 2 6
setdiff(x,y) 1 1 #存在于x中而不在y中
setdiff(y,x) 1 2 6
重点:%in% 没有快捷键(非对应比较)
x %in% y #x的每个元素在y中存在吗
y %in% x #y中的每个元素在x中存在吗
向量筛选(取子集)
x <- 8:12;xx==10 10
xx<12 8 9 10 11
xx%in%c(9:12) 9 10 11 12
#以上均根据逻辑值筛选
#按位置筛选:
x4 11
x2:4 9 10 11
xc(1,5) 8 12 #x1,5 会报错,“[]”中需为向量
x-(2:4) 8 12 #“-”为反选,即去除所选部分
按照逻辑值:与x等长的且一一对应的以逻辑值组成的向量;
按照位置:由x下标所组成的向量
修改向量中某个元素
x4 <- 40 #改一个元素
xc(1,5) <- c(80,20) #改多个元素
#R语言里所有修改都需要赋值,没有赋值就没有发生
删掉某一个变量:rm(x)
向量的作图
k1 <- rnorm(12);k1
plot(k1) #k1作为纵坐标(点图)
k2 <- rep(c("a","b","c","d"),each=3);k2
1 "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d"
boxplot(k1~k2) #k1作纵坐标,k2作横坐标,自动生成中位数(箱线图)
向量(Vector)——一维
数据框(“表格”)——二维:matrix:矩阵,二维,只允许一种数据类型;data.frame:数据框,二维,每列只允许一种数据类型
列表(list)
判断数据结构:(1)根据生成的函数判断;(2)利用class或is函数判断。
#Rdata的保存
save(g,s,file="gands.Rdata") #将变量g,s储存到gands.Rdata中
load("gands.Rdata") #调用变量g,s
#numeric:double, integer
typeof(x) #返回原函数
x = c(1L,2L,4L,5L) #也可生成整数列
引用自生信技能树
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。