在R中的矩阵中添加新列

时间:2015-08-18 13:52:49

标签: r matrix

我有一个包含1列的矩阵:

> Control_Title_name

vehicle_scan_id4
153 "CL2004060801AA"
155 "CL2004060801AA"
232 "EC2004102602AA"

我想添加一个新列(名为“Class”),如下所示:

> Control_Title_name

vehicle_scan_id4 Class
        153 "CL2004060801AA" "Control"
        155 "CL2004060801AA" "Control"
        232 "EC2004102602AA" "Control"

第一列的长度(“vehicle_scan_id4”)是可变的,所以我希望“Control”在每一行中显示为第二列(“Class”)中的值。

3 个答案:

答案 0 :(得分:3)

您可以使用cbind()

Control_Title_name <- matrix(c('CL2004060801AA','CL2004060801AA','EC2004102602AA'),3,dimnames=list(c('153','155','232'),c('vehicle_scan_id4')));
Control_Title_name;
##     vehicle_scan_id4
## 153 "CL2004060801AA"
## 155 "CL2004060801AA"
## 232 "EC2004102602AA"
Control_Title_name <- cbind(Control_Title_name,Class='Control');
Control_Title_name;
##     vehicle_scan_id4 Class
## 153 "CL2004060801AA" "Control"
## 155 "CL2004060801AA" "Control"
## 232 "EC2004102602AA" "Control"

回答你的第二个问题:

Control_Title_name[,'vehicle_scan_id4'] <- paste0(Control_Title_name[,'vehicle_scan_id4'],'.CEL');
Control_Title_name;
##     vehicle_scan_id4     Class
## 153 "CL2004060801AA.CEL" "Control"
## 155 "CL2004060801AA.CEL" "Control"
## 232 "EC2004102602AA.CEL" "Control"

答案 1 :(得分:0)

替代

library(dplyr) 

Control_Title_name %>% 
  as.data.frame() %>% 
  mutate(Class='Control')

   vehicle_scan_id4   Class
1   CL2004060801AA Control
2   CL2004060801AA Control
3   EC2004102602AA Control

答案 2 :(得分:0)

> Phenodata
    Name                 FileName             Target     
153 "EC2004060203AA.CEL" "EC2004060203AA.CEL" "Treatment"
155 "EC2004060205AA.CEL" "EC2004060205AA.CEL" "Treatment"
232 "EC2004102606AA.CEL" "EC2004102606AA.CEL" "Treatment"
153 "CL2004060801AA.CEL" "CL2004060801AA.CEL" "Control"  
155 "CL2004060801AA.CEL" "CL2004060801AA.CEL" "Control"  
232 "EC2004102602AA.CEL" "EC2004102602AA.CEL" "Control"

这就是我的最终矩阵的样子。有没有办法可以根据row.names上的值来过滤唯一的行。例如,第4行和第5行包含完全相同的值。我的新矩阵可能只包含其中一个,而不是两个。