与R纠缠的两件事——rownames和子集--转载
与R语言纠缠了一个星期,从快速上手的暗暗得意,到之后某些细节的纠结烦躁,过山车式体验中,我逐渐才认识了真实的R语言。
期间遇到两个很烦恼的问题,一个是让人烦躁抓狂,另一个是无意发现的重大错误。
1. 令人抓狂的rownames
若数据矩阵datamatrix如图1,无列名和行名及表头。若c1~c4分别为colnames,而r1~r5为rownames,表头为A。
如何添加c1~c4?r1~r5?
coln = c(”c1”,”c2”,”c3”,”c4”)
rown = c(”r1”,”r2”,”r3”,”r4”,”r5”)
colnames(datamatrix) = coln
rownames(datamatrix) = rown
如何添加表头A?
colnames(datamatrix) = c(“A”,”c1”,”c2”,”c3”,”c4”)
上述命令会直接报错,列数不匹配。
colnames(datamatrix)[1] = “A”
上命令会让矩阵变成如图2所示
究其本质,都是因为colnames()函数默认调用的都是真实数据上(x1~x4)的列名,而不认识行名上(r1~r5)的列名。
正确添加表头命令为:
datamatrix= cbind(rownames(datamatrix),datamatrix)#将行名加入矩阵
rownames(datamatrix)[1]= “A”
实现后矩阵如图3,
另外
read.table或wirte.table中也有row.names和col.names条件格式。与上rownames和colnames不仅书写上有区别,意义上也有。row.names用于指定行名。数值为k时,则将第k列设置为列名,并将其从数据矩阵中移除。而write.table中row.names=F将矩阵的行名剔除后写进table.
2. 子集选取("numeric"和"character"之争)
genename =
CRHBP,….
mode(genename) =
“numeric”
m1 为如下矩阵
mode(m1) =
"numeric"
若要在m1中选取genename对应的id所在行的子集,命令应该为:
m1[genename,]
但结果很诡异,返回的并不是id对应为CRHBP所在行,返回却是CRHR1所在行
要想返回所选的行,必须先将genename转换为character类型,才是准确的。
genename <- as.character(genename)
m1[genename,]
此时,结果才为所求行。
与R纠缠的两件事——rownames和子集--转载的更多相关文章
- 再访贺利坚(一):IT毕业生去培训机构,这件事很正常(转载)
转载自: 再访贺利坚(一):IT毕业生去培训机构,这件事很正常 导语:与烟台大学计算机学院贺利坚副教授相识,还是在2012年年底,那个时候我在为社区之星专访栏目寻找合适的采访人.在社区运营的推荐下,我 ...
- 让一个端口同时做两件事:http/https和ssh
相信很多人都在YY:能不能让80端口分析连接协议,如果是http协议就让服务器交给http服务程序(如Apache.Nginx等)处理,如果是ssh协议就交给ssh服务程序(如OpenSSH Serv ...
- 安装mysql后必做的两件事
1..删除掉不需要的用户 查看用户表mysql> SELECT User,Host FROM mysql.user; +------+-------------------------+ | U ...
- 安装完CentOS 7 后必做的七件事
CentOS是最多人用来运行服务器的 Linux 版本,最新版本是 CentOS 7.当你兴趣勃勃地在一台主机或 VPS 上安装 CentOS 7 后,首要的工作肯定是加强它的安全性,以下列出的七件事 ...
- 安装完CentOS 7 后必做的七件事[转]
CentOS是最多人用来运行服务器的 Linux 版本,最新版本是 CentOS 7.当你兴趣勃勃地在一台主机或 VPS 上安装 CentOS 7 后,首要的工作肯定是加强它的安全性,以下列出的七件事 ...
- 安装 CentOS 7 后必做的七件事
原文 安装 CentOS 7 后必做的七件事 CentOS 是最多人用来运行服务器的 Linux 版本,最新版本是 CentOS 7.当你兴趣勃勃地在一台主机或 VPS 上安装 CentOS 7 后, ...
- 关于 Java Collections API 您不知道的 5 件事--转
第 1 部分 http://www.ibm.com/developerworks/cn/java/j-5things2.html 对于很多 Java 开发人员来说,Java Collections A ...
- 简单几步优化你的windows,加快开机速度(重装windows之后要做的几件事)
每个人都想要让自己的系统运行得快一些,开机快一些,我就来说说我自己的经验,我使用的系统是windows8.1,当然这有些方法也适用于其他的系统,我每次重装完系统之后第一件事就是下面几步,当然重装系统之 ...
- 关于Go,你可能不注意的7件事
转自: https://tonybai.com/2015/09/17/7-things-you-may-not-pay-attation-to-in-go/ Go以简洁著称,但简洁中不乏值得玩味的小细 ...
随机推荐
- 【BZOJ1877】[SDOI2009]晨跑 最小费用最大流
[BZOJ1877][SDOI2009]晨跑 Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现 ...
- 统计文件中单词的个数---Shell及python版
最近在看shell中有个题目为统计单词的个数,使用了awk功能,代码如下 #!/bin/bash ];then echo "Usage:basename $0 filename" ...
- Swift - 获取状态栏一些信息
// 获取状态栏的各种信息 :网络类型,运营商,电池电量,显示的系统时间等信息 import UIKit enum NetWorkType { case NetworkStatesNone // 没有 ...
- GROUPING SETS与GROUP_ID
SELECT E.DEPARTMENT_ID DID, E.JOB_ID JOB, E.MANAGER_ID MID, SUM(E.SALARY) SUM_SAL, COUNT(E.EMPLOYEE_ ...
- DFS判断正环
hdu1217 Arbitrage Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 微信开发(2):微信js sdk分享朋友圈,朋友,获取config接口注入权限验证(转)
进行微信开发已经一阵子了,从最初的什么也不懂,到微信授权登录,分享,更改底部菜单,素材管理,等. 今天记录一下微信jssdk 的分享给朋友的功能,获取config接口注入. 官方文档走一下简单说:四步 ...
- [shell]用shell脚本将本地文件夹与ftp上的文件夹同步
需求说明 最近在AIX上做开发,开发机器在office网段,测试机器在lab网段,不能互相通讯,只能通过特定的ftp来传文件. 每次上传的机器都要做:登录ftp,进入我的目录,上传:下载的机器都要做: ...
- Linux登录失败处理功能
本文要实现的功能:如果有人恶意尝试破解你的服务器密码,那么这个功能就能帮你起到一定的作用,当尝试密码错误超过设定的次数后,就会锁定该账户多长时间(自行设定),时间过后即可自行解锁,这样可以增加攻击者 ...
- 第二次去苹果店维修MacBook
今天上午,在使用外接鼠标的情况下,屏幕上鼠标指针乱窜.乱点.不受控制的故障再次出现,这次拍下了视频. 再次去苹果网站预约Genius Bar(天才吧),中午的时候去了苹果店.这次没有像上次那样检查身份 ...
- Golang学习 - builtin 包
Go builtin包提供了go预先声明的函数.变量等的文档.这些函数变量等的实现其实并不是在builtin包里,只是为了方便文档组织. 这些内置的变量.函数.类型无需引入包即可使用. 默认提供的有: ...