我有一个包含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”)中的值。
答案 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行包含完全相同的值。我的新矩阵可能只包含其中一个,而不是两个。