) x[1]#取向量x当中第1个元素 x[-1]#取向量x当中除了第1个以外的其它元素 x[c(1,3,5)]#取第1,3,5个元素 x[c(T,F)]#>1,3,5 循环补充 x[x>3]#从向量x中取出大于...m+1#矩阵m中每一个元素都加1 colSums(m)#每一列的总和 rowSums(m) colMeans(m) rowMeans(m) 4.5 矩阵中的函数 diag(m)#取对角线上的数字(该函数要求矩阵行和列相同...3列 subset(data, age >= 30, select = c(“name”, “age”)#在数据框data中选择age大于等于30的观测值,并只选择name和age两列 数据框的更改 transform...) NaN(不存在的值,如0/0) Inf(无穷大或无穷小,不可能的值,如1/0) a <- c(NA,1:49) is.na(a)#测试向量a里面含元素NA吗 sum(a,na.rm = TRUE...) mean(a,na.rm = TRUE)#按49个数来计算 colSums(is.na(sleep))#计算每一列缺失值数目 rowSums(is.na(sleep)) c <- c(NA,1:20
is.na按照数据框格式形成一个(FALSE,FALSE,TURE)列,而complete.cases形成是一个数列向量,不再是按照数据框格式; 2、输出数据内容不同。...complete.cases输出的逻辑向量与is.na正好相反,is.na的TURE为是缺失值;complete.cases的TURE为完整值。...(is.na(an),na.rm = T) #多维数列,按列,na.rm为是否需要忽略缺失值,na.rm=T表示忽略,删除 rowSums(is.na(an),na.rm = T)...#多维数列,按行,na.rm为是否需要忽略缺失值,na.rm=T表示忽略,删除 #数据框中的缺失值操作 #数据框中的缺失值操作 y TRUE"] #上同,选中缺失值 an[is.na(an)] x中所以NA元素用0来代替 an[
> is.na(c(1,2,3,NA,'sdas')) [1] FALSE FALSE FALSE TRUE FALSE # 我们可以直接用which 获取TRUE 所在的index 但是,这个函数并不能很好的使用在数据框中...如果你是个数学鬼才,可以计算一下,也就是所在坐标对行数取余,这个余就是NA所在的行数: > which(is.na(rcmat)) [1] 205214 > 205214%%70544 [1] 64126...还有一个不错的方法,就是通过rowSums 函数,对行求和。...(X$X1)),] X1 X2 1 A 1 2 B NA 3 C 3 4 D 4 5 E 5 replace_na() 这个函数我很喜欢,可以将指定列中的NA 替换为指定的数值:...B NA 3 C 3 4 D 4 5 E 5 6 6 函数中参数设置 很多函数,都有参数na.rm 可以直接在对列表操作时去除NA 值,比如: > a = c(3,4
min_max <- list( min = ~min(.x, na.rm = TRUE), max = ~max(.x, na.rm = TRUE) ) starwars %>% summarise...x, na.rm = TRUE), .names = "min_{.col}"), across(where(is.numeric), ~max(.x, na.rm = TRUE), .names..._at() 函数是 「dplyr」 中唯一你需要手动引用变量名的地方,这让它们比较奇怪且难以记忆。 为什么过了这么久才发现 across()?...(is.numeric, mean, na.rm = TRUE) # -> df %>% mutate(across(where(is.numeric), mean, na.rm = TRUE)) df...0 的所有的行 rowAny x) rowSums(x) > 0 df %>% filter(rowAny(across(where(is.numeric), ~ .x > 0
> data(iris) #鸢尾花数据集 > dim(iris) #读取iris数据集的维度数值,以“行数 列数 ”形式展示 [1] 150 5 #说明iris数据集是150 x 5的二维数组...通过变量名引用(多用于二维数组中):数据集$变量名 > head(iris$Petal.Length,5) [1] 1.4 1.4 1.3 1.5 1.4 1 创建新变量 在R语言中,可以通过变量计算/...%y (求余) x%/%y (商,整数) 2 变量重新编码 可用于将连续数据编码为分组数据,或者替代异常值等 在R中重新编码数据常用逻辑运算符,通过TRUE/FALSE等返回值,确定编码的位置...类似excel透视表反向操作 #gather(data, key, value, …, na.rm = FALSE, convert = FALSE) #data:需要被转换的宽形表 #key:将原数据框中的所有列赋给一个新变量...key #value:将原数据框中的所有值赋给一个新变量value #…:可以指定哪些列聚到同一列中 #na.rm:是否删除缺失值 widedata data.frame(person=c('Alex
colnames(female_rpkm) %in% grep("rep",colnames(female_rpkm), value=TRUE)] ## 只保留编码基因(去掉类似:X5430419D17Rik...= TRUE) sd_per_gene na.rm = TRUE) mad_per_gene na.rm = TRUE) cv = sd_per_gene/mean_per_gene library(matrixStats) var_per_gene 的程度。这个相对偏差CV描述的是标准偏差与平均值之比。...), ncp = ncol(females_data), graph=FALSE ) 然后挑选最显著的主成分,作为tSNE的输入 记得在Seurat中是使用ElbowPlot() 关注肘部的
是R语言用于生信分析时最常用且最重要的两种数据类型,编程语言还是需要多练,熟能生巧,没别的捷径,学了不用也就忘了。...自己答案 class(VADeaths) dfv=as.data.frame(VADeaths) dfv$Total=rowSums(dfv) #rowsums是查找后得知的 #不会排序 标准答案 class...rowSums(df[1:4]) df <- df[, c(5, 1:4)] 分析 排序方式,即从原dataframe取一个新的子集,按所需要的顺序(如列)取 Exercise 7 For...= TRUE)) df$proportion <- round(df$Examination / df["Total", "Examination"], 3) 分析 最后一个取比例,我自己是把简单的事情复杂化...0,1,2,3四个数将0-3分成了三个区间,include.lowest代表左边的值取不取,right表示右边的值取不取,意思就是数学中的左开右闭/左闭右开区间。最后的labels就是分三级。
二维统计直方图的变量x和y的类型必须是数值型。在x和y轴找到各自的最大值和最小值,使得测定的所有数据都包含在【Xmin,Xmax】,【Ymin,Ymax】之间。...颜色搭配 颜色搭配是根据RColorBrewer包的主题方案进行的,特别喜欢RdYlBu双色渐变系的颜色,比较喜欢该盘的第1-11号红蓝渐变的色系。...#每个方块是六边形的 ggplot(data,aes(x,y))+geom_hex(bins=30,na.rm=TRUE)+scale_fill_gradientn(colours=colormap)...#每个方块是方块形的 ?...detailed",bty="f",box=TRUE,theta=45,phi=30,d=5) ?
apply函数可以对矩阵、数据框、数组(二维、多维),按行或列进行循环计算,对子元素进行迭代,并把子元素以参数传递的形式给自定义的FUN函数中,并返回计算结果。...调用格式如下: apply(X, MARGIN, FUN, ...) X: 是一个数组(array),也就是说输入必须都是相同类型的数据,要么都是数值型,要么都是字符型。...当然你说可以使用 rowSums(x)也一样能得到结果,但是如果稍微复杂点,rowSums函数就不行了。...x TRUE,TRUE,TRUE,TRUE))# 分别计算每个KEY对应数据的分位数。...x x=3, y=c(2:1, 4:5))lapply(data.frame(x), sum)$x[1] 12 $y[1] 12 sapply函数 sapply函数是一个简化版的lapply
背景 在使用R语言过程中,每一步中都需要关注R语言的数据结构。数据结构是R语言中最重要的内容,也是最难的一部分,学会了这部分之后,R语言就不难了。...(matrix) 二维数组 否 5 数据框(data frame) 行和列组成的表,每列可以是不同数据类型 是 6 列表(list) 不同对象的有序集合 是 7 时间序列 根据时间顺序排列的数据 是 8...直接敲数据集的名字就能够打印出数据集的内容,内置数据集与自己通过文件将数据读入 R 中,存储为变量效果上是一样的。...向量其实是用于存储数值型、字符型或逻辑型数据的一维数组。R 中的向量与解析几何或者物理学中有数值和方向的量不同,R 中的向量是一个集合,即可以是数值的集合也可以是字符串或者逻辑值的集合。...向量是一维的,而矩阵是二维的,需要有行和列。矩阵是 R 语言中使用较多的一种数据结构,矩阵分为数值矩阵和字符串矩阵,常用的是数据矩阵,基因的表达数据为数值矩阵。
函数功能:summarize()可以将数据框折叠成一行: summarize(flights, delay = mean(dep_delay, na.rm = TRUE)) #> # A tibble:...(by_day, delay = mean(dep_delay, na.rm = TRUE)) #> Source: local data frame [365 x 4] #> Groups: year...于是这首童谣可以如下表示,这种方法的最大缺点是,你必须为每个中间结果建立一个变量,在很多情况下,比如在本例中,这些变量其实是没有什么实际意义的,你还必须使用数字后缀来区分这些变量: foo_foo_1...3.6.2 缺失值 聚合函数遵循缺失值的一般规则:如果输入中有缺失值,那么输出也会是缺失值。好在所有聚合函数都有一个 na.rm参数,只需设置na.rm =TRUE,即可在计算前除去缺失值。...四分位距IQR()和绝对中位差mad(x)基本等价,更适合有离群点的情况。 秩的度量:min(x)、quantile(x, 0.25)和max(x) 分位数是中位数的扩展。
1写在前面 我们还是在正式进行代码操作前想几个小问题: 如何将单细胞数据导入R中? 不同类型的数据/信息(如细胞信息、基因信息等)是如何存储和操作的?...注意assays必须是matrix tung <- SingleCellExperiment( assays = list(counts = as.matrix(counts)), colData...但有时候我们获取的文件是cellranger(用于10X Chromium数据)的输出文件,这个时候我们可以用DropletUtils包中的read10xCounts函数。...data_frame 替换colData colData(sce)$column_name 中添加/替换一个新的列 rowData(sce)$column_name...举个栗子 ,假设细胞至少25000counts,基因在至少一半的细胞中拥有超过5个counts。
每一个向量中的数据类型必须一致。...) status.f # PoorImprovedImprovedExcellentPoorImprovedImproved 1.3 矩阵 矩阵(matrix)是一个由行和列组成的二维数组。...: rowSums(mat1) colSums(mat1) rowMeans(mat1) colMeans(mat1) 1.4 数组 通常所说的数组(array)指的是多维数组,它与矩阵类似,但是维数大于...1.6 数据框 数据框(dataframe)是一个由行和列组成的二维结构,其中行表示观测(observation)或记录(record),列表示变量(variable)或指标(indicator)。...与矩阵不同的是,数据框里不同的列可以是不同模式(数值型、字符型等)的数据。数据框可以通过函数 data.frame( ) 创建。
今天的推文介绍一下柱形图实现的代码 image.png 先介绍一个小知识点 ggplot2作图X轴默认坐标轴的刻度是朝下的,Y轴默认的刻度是朝左的,如果要改为朝上和朝右,该如何设置。...= unit(-1,'cm')刻度线的长度调整为负数就可以了, 但是还遇到一个问题是 横坐标的文本和标题可以通过vjust参数上下调节,纵坐标的参数却不能够用hjust的参数左右调节,不知道是什么原因...下面开始重复开头提到的柱形图 首先是数据,用到的是dslabs这个R包 安装直接使用命令install.packages("dslabs") 加载数据集 library(dslabs) data("nyc_regents_scores...") 给数据集增加一列 library(dplyr) nyc_regents_scores %>% head() nyc_regents_scores$total rowSums(nyc_regents_scores...[,-1], na.rm=TRUE) 对数据集过滤 如果score这一列是缺失值就把这行数据删除 nyc_regents_scores %>% filter(!
在实际使用中,ggplot中使用的图层是以geom或者stat开头的函数创建的,但是如果查看一下这些图层函数的具体内容可以发现他们都是在封装一个layer函数。...因此可做如下总结 一个图层的定义(geom或者stat开头的函数)必须同时包含一个geom和一个stat对象,通过layer函数将其串联在一起,返回一个ggproto对象。...ggplot_build函数的具体处理过程如下: layer: ggplot对象在绘制过程中,首先是使用Layer的setup_layer函数处理layer相关的数据处理,这里一般不处理数据,只是一个hook...但是必须强调的是geom开头还是stat开头只是一种命名的推荐范式,并不是强制的规范。...Geom的setup_data方法可以在绘制之前先处理一下数据,因为最大值和最小值只定义了线段的y坐标,没有定义线段的x坐标,所以x坐标可以根据width参数值在boxplot的x坐标两边均分,变为xmin
在 R 包中,我有看到过 maftools 中可以绘制这样的图,用来表示新的数据队列与 TCGA 数据的比较,这也是应用于 TMB 分析。因为研究问题,我最近也想尝试使用改种图形来展示数据。...难度有以下几点,感兴趣的读者不妨带着这些问题阅读源代码: 怎么对点排序,构建绘图坐标? 怎么对不同的 panel 展示不同的背景颜色?theme() 中的选项都不支持向量化,所以必须另辟蹊径。...(.data$.gvar) %>% dplyr::summarise( x_m = median(.data$x, na.rm = TRUE), y_m = fun(.data...(.data$.gvar) %>% dplyr::summarise( n = dplyr::n(), xmin = min(.data$x, na.rm = TRUE)..., xmax = max(.data$x, na.rm = TRUE), ymin = min(.data$.dvar, na.rm = TRUE), ymax =
要使用的话,把函数放你的代码中然后像下面一样调用它。...处理缺失值 如果数据中存在NA值,你需要添加na.rm=TRUE选项。通常你可以在summaryBy()函数中设置,但length()函数识别不了这个选项。...一种解决方式是根据length()函数定义一个新的取长度函数去处理NA值。...# 新版的length函数可以处理NA值,如果na.rm=T,则不对NA计数 length2 x, na.rm=FALSE) { if (na.rm) sum(!...# 对每个目录 (sex*condition) 中的对象计数 cdata data["subject"], by=data[c("sex","condition")], FUN
不过,实际情况中,我们需要传输一些非结构化的数据,这时候就必须用到 JSNO 或者 YAML。...2013.csv") JSON json(原生) jsonlite YAML PyYAML yaml 基本数据结构 由于是从科学计算的角度出发,R 中的数据结构非常的简单,主要包括 向量(一维)、多维数组...(二维时为矩阵)、列表(非结构化数据)、数据框(结构化数据)。...( arr = mean(arr_delay, na.rm = TRUE), dep = mean(dep_delay, na.rm = TRUE)) %>% filter(arr...事实上,现在 R 和 Python 的数据操作的速度已经被优化得旗鼓相当了。下面是R中的 data.table、dplyr 与 Python 中的 pandas 的数据操作性能对比: ?
导语 GUIDE ╲ ComplexUpset是一个应用于复杂的多个数据集合可视化的R语言包。...背景介绍 对于集合的可视化,我们第一反应想到的往往是韦恩图,韦恩图本身在集合数目较少的情况下是非常适用的,但是一旦集合数目较多,并且想要展示的数据维度复杂,仅仅通过韦恩图去可视化是不能完全展示数据内容的...(data=abc_data, alpha=0.05) + geom_point(aes(x=x, y=y, color=region), size=1) + geom_venn_circle...=TRUE) + geom_violin(alpha=0.5, na.rm=TRUE) ), #第三种方法:使用`upset_annotate` 'Budget'=upset_annotate...('budget', geom_boxplot(na.rm=TRUE)) ), min_size=10, width_ratio=0.1 ) 还可以使用条形图演示分类变量比例的差异: set_size
,比如我们想要画散点图,那么x, y 是必不可少的; default_aes 设置默认的元素及其参数,比如shape, color, size 这些; draw_key 用来配置图例的标记,可以直接调用...对象时直接调用转换后结果中的内容,比如x,y 等aesthetics。..., params = list(na.rm = na.rm, ...) ) } 接下来我们就可以利用这个创建的自定义的geom_** 方法进绘图了: ggplot(data = iris,...$ shape: num 1 1 1 1 1 1 1 1 1 1 ... [1] "data" 虽然coords 是data 经过了某种转换,可是我并没有发现其中的规律,比如x 与y 对应位置上的元素并非是等比的...这又改如何把data 中的对应列给到图像呢? 只能先在此处停顿一下了。 下一部分我们继续介绍剩下的内容。