在 R 中的矩阵中添加新列

use*_*470 2 r matrix

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

> Control_Title_name

vehicle_scan_id4
153 "CL2004060801AA"
155 "CL2004060801AA"
232 "EC2004102602AA"
Run Code Online (Sandbox Code Playgroud)

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

> Control_Title_name

vehicle_scan_id4 Class
        153 "CL2004060801AA" "Control"
        155 "CL2004060801AA" "Control"
        232 "EC2004102602AA" "Control"
Run Code Online (Sandbox Code Playgroud)

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


> 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"
Run Code Online (Sandbox Code Playgroud)

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

bgo*_*dst 7

您可以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"
Run Code Online (Sandbox Code Playgroud)

回答你的第二个问题:

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"
Run Code Online (Sandbox Code Playgroud)