R语言scale()标准化 | 您所在的位置:网站首页 › r语言给矩阵行列标准化 › R语言scale()标准化 |
R语言中scale函数,可以对数据进行处理,标准化(归一化)在一定的范围,比较适合大范围变化数据归一化处理从而观察数据变化趋势 scale()函数 scale(x, center = TRUE, scale = TRUE)x一般是一个矩阵,也可以是一个数值向量 center--是否中心化 scale--是否标准化 1、以数值向量为例: > A [1] 3.74149 7.36180 5.81734 5.71131 7.97054 10.37620 6.29949 5.55062 5.84779[10] 15.58810 14.76360 17.74670长度12,scale=T,center=T: > scaleA=scale(A)> scaleA [,1] [1,] -1.1123845 [2,] -0.3313828 [3,] -0.6645658 [4,] -0.6874395 [5,] -0.2000606 [6,] 0.3189073 [7,] -0.5605527 [8,] -0.7221048 [9,] -0.6579969[10,] 1.4432593[11,] 1.2653916[12,] 1.9089294attr(,"scaled:center")[1] 8.897915attr(,"scaled:scale")[1] 4.63547>长度12,scale=T,center=F,数字都是正数 > scaleA=scale(A,center=F)> scaleA [,1] [1,] 0.3602619 [2,] 0.7088557 [3,] 0.5601421 [4,] 0.5499327 [5,] 0.7674702 [6,] 0.9991073 [7,] 0.6065676 [8,] 0.5344601 [9,] 0.5630741[10,] 1.5009526[11,] 1.4215629[12,] 1.7088007attr(,"scaled:scale")[1] 10.38547
注意:数值不能完全一致,否则返回NaN: > scale(c(1,1,1,1,1,1)) [,1][1,] NaN[2,] NaN[3,] NaN[4,] NaN[5,] NaN[6,] NaNattr(,"scaled:center")[1] 1attr(,"scaled:scale")[1] 02、以数值矩阵为例:计算的是每列的scale结果(第一列数据刚好是上一步演示数据,可对比一下结果) > dat1 A B C D E F G H I J K LCK-WT-1 3.74149 5.23528 2.821317 118.6600 1.8737693 1.7103460 30.26110 86.6405 1448.6278 173.9960 77.06166 3.19210CK-WT-2 7.36180 2.77070 1.563395 140.1430 16.9090246 0.7802436 33.65711 116.4700 1634.0417 51.0019 98.30970 4.69276CK-WT-3 5.81734 2.66859 1.931628 123.3830 0.9559375 2.7996091 31.46691 111.7380 1566.5626 52.3322 101.42702 3.58136CK-tdr1-1 5.71131 3.22632 3.194809 97.2229 0.4774184 4.7297117 30.96890 82.8809 648.4734 66.9486 46.86340 3.03234CK-tdr1-2 7.97054 1.32105 2.600854 95.2539 0.5273923 4.3637146 28.03340 85.7292 683.4113 41.1148 70.29293 2.11160CK-tdr1-3 10.37620 1.96726 2.301278 91.8525 0.4333881 3.3732144 27.62150 79.6027 647.2750 49.7169 57.09809 3.53808NaWT-1 6.29949 2.40259 2.044360 121.8080 39.1065780 2.2783575 35.59571 106.4650 1248.4062 192.7300 151.37454 4.79151NaWT-2 5.55062 3.23077 2.104095 125.1350 36.5302500 2.8043996 32.99440 111.3370 1117.6042 183.2700 160.54078 4.16132NaWT-3 5.84779 4.80378 2.630611 106.5070 19.4561309 2.9542534 32.77111 98.1677 1191.6926 111.2120 137.35694 3.40994Natdr1-1 15.58810 2.04301 2.289544 81.6997 13.2227038 3.1700429 19.02370 69.4519 501.2779 78.8024 101.08433 6.01932Natdr1-2 14.76360 2.29524 2.801336 84.8495 10.8897780 4.6643058 18.14860 69.7807 395.9033 96.2520 82.21420 5.59169Natdr1-3 17.74670 1.95286 2.450605 80.3895 12.2580100 4.0243357 15.79980 68.8929 468.8953 66.7984 108.79391 8.12127 每列长度12,scale=T,center=T,返回scale后的矩阵 > scaleDat1 A B C D E F G H I J KCK-WT-1 -1.1123845 2.06922600 0.9498394 0.65959663 -0.79734415 -1.19085395 0.3345230824 -0.2241247 1.0711933 1.37750741 -0.62155046CK-WT-2 -0.3313828 -0.04789386 -1.8494507 1.74255232 0.30794653 -1.96684043 0.8433687097 1.4659006 1.4799090 -0.82335259 -0.02949209CK-WT-3 -0.6645658 -0.13560824 -1.0300104 0.89768254 -0.86481696 -0.28207930 0.5151965742 1.1978036 1.3311618 -0.79954817 0.05736930CK-tdr1-1 -0.6874395 0.34349216 1.7809813 -0.42104526 -0.89999446 1.32820957 0.4405772141 -0.4371293 -0.6926209 -0.53800188 -1.46299915CK-tdr1-2 -0.2000606 -1.29317006 0.4592366 -0.52030233 -0.89632071 1.02285734 0.0007314704 -0.2757555 -0.6156058 -1.00027265 -0.81015531CK-tdr1-3 0.3189073 -0.73806370 -0.2074192 -0.69176654 -0.90323127 0.19648085 -0.0609863755 -0.6228596 -0.6952627 -0.84634642 -1.17781819NaWT-1 -0.5605527 -0.36410717 -0.7791451 0.81828696 1.93976112 -0.71696069 1.1338423951 0.8990556 0.6298363 1.71273416 1.44911408NaWT-2 -0.7221048 0.34731479 -0.6462152 0.98600067 1.75036684 -0.27808262 0.7440715578 1.1750845 0.3415040 1.54345664 1.70452348NaWT-3 -0.6579969 1.69855951 0.5254554 0.04696522 0.49519263 -0.15305922 0.7106135334 0.4289623 0.5048200 0.25404869 1.05852570Natdr1-1 1.4432593 -0.67299305 -0.2335303 -1.20356808 0.03695307 0.02697441 -1.3492524881 -1.1979651 -1.0170902 -0.32588964 0.04782059Natdr1-2 1.2653916 -0.45632281 0.9053748 -1.04478701 -0.13454792 1.27364125 -1.4803744502 -1.1793365 -1.2493721 -0.01364599 -0.47797937Natdr1-3 1.9089294 -0.75043357 0.1248833 -1.26961512 -0.03396473 0.73971279 -1.8323112232 -1.2296359 -1.0884727 -0.54068956 0.26264141 LCK-WT-1 -0.7138772CK-WT-2 0.2084474CK-WT-3 -0.4746331CK-tdr1-1 -0.8120677CK-tdr1-2 -1.3779661CK-tdr1-3 -0.5012335NaWT-1 0.2691404NaWT-2 -0.1181823NaWT-3 -0.5799900Natdr1-1 1.0237679Natdr1-2 0.7609411Natdr1-3 2.3156530attr(,"scaled:center") A B C D E F G H I J K L 8.897915 2.826454 2.394486 105.575333 12.720032 3.137711 28.028521 90.596375 962.680951 97.014600 99.368125 4.353607 attr(,"scaled:scale") A B C D E F G H I J K 4.6354700 1.1641193 0.4493719 19.8373766 13.6029875 1.1986064 6.6739314 17.6503265 453.6500351 55.8845631 35.8884205 L 1.6270411 >3、矩阵巨大,或者指定行或者列进行标准化,可以用apply批量进行,譬如:12X2000的矩阵(结构类似上一步): > dim(dat2)[1] 12 2000默认可以直接scale(dat2)获得列结果,返回结果同第二步,如果指定行结果呢? > ScaleDat2_row=apply(dat2, 1,scale ) > rownames(ScaleDat2_row)=colnames(dat2) > head(ScaleDat2_row,2) CK-WT-1 CK-WT-2 CK-WT-3 CK-tdr1-1 CK-tdr1-2 CK-tdr1-3 NaWT-1 NaWT-2 NaWT-3 Natdr1-1 Natdr1-2 Natdr1-3AT1G01010 -0.2386968 -0.2245197 -0.2270909 -0.2677180 -0.2599348 -0.2392684 -0.2021240 -0.2093897 -0.2163308 -0.1800695 -0.1880828 -0.1720898AT1G01030 -0.2322447 -0.2436961 -0.2411622 -0.2852821 -0.3091559 -0.2995012 -0.2159012 -0.2178163 -0.2205802 -0.2509797 -0.2544241 -0.2586433 > ScaleDat2_row[,1][1:10] AT1G01010 AT1G01030 AT1G01040 AT1G01050 AT1G01060 AT1G01070 AT1G01080 AT1G01090 AT1G01100 AT1G01120 -0.2386968 -0.2322447 -0.2426714 0.2576744 -0.2467641 -0.2474700 -0.1241498 0.1193716 6.0022478 0.4966890注意指定行,也就是apply(dat2,1,scale),中1,返回结果将是一个大矩阵,对行进行scale,相当于多次对2000个数据做处理,返回矩阵结构和原矩阵发生了行列转置的情况,也就是说:对行处理的结果,出现在返回值的列中。 譬如经如上处理,第一行的返回值是ScaleDat2_row的第一列,如上展示了其中的前十个,对dat2[1,]处理的返回值前10则如下(二者一致): 注意事项,直接取第一列scale(dat2[1,]将返回NaN,需要先将其转换成纯数值向量as.numeric > Row1=dat2[1,]> scale(as.numeric(Row1))[1:10] [1] -0.2386968 -0.2322447 -0.2426714 0.2576744 -0.2467641 -0.2474700 -0.1241498 0.1193716 6.0022478 0.4966890这一操作经常在peatmap绘制热图的时候使用,注意相关参数的理解:R语言画图 更多生物信息课程:1. 文章越来越难发?是你没发现新思路,基因家族分析发2-4分文章简单快速,学习链接:基因家族分析实操课程、基因家族文献思路解读 2. 转录组数据理解不深入?图表看不懂?点击链接学习深入解读数据结果文件,学习链接:转录组(有参)结果解读;转录组(无参)结果解读 3. 转录组数据深入挖掘技能-WGCNA,提升你的文章档次,学习链接:WGCNA-加权基因共表达网络分析 4. 转录组数据怎么挖掘?学习链接:转录组标准分析后的数据挖掘、转录组文献解读 5. 微生物16S/ITS/18S分析原理及结果解读、OTU网络图绘制、cytoscape与网络图绘制课程 6. 生物信息入门到精通必修基础课:linux系统使用、perl入门到精通、perl语言高级、R语言入门、R语言画图 7. 医学相关数据挖掘课程,不用做实验也能发文章:TCGA-差异基因分析、GEO芯片数据挖掘、GEO芯片数据标准化、GSEA富集分析课程、TCGA临床数据生存分析、TCGA-转录因子分析、TCGA-ceRNA调控网络分析 8.其他,二代测序转录组数据自主分析、NCBI数据上传、二代测序数据解读 |
CopyRight 2018-2019 实验室设备网 版权所有 |