如何操作我的数据框以保持列具有匹配的行名?

How do I manipulate my dataframe to keep the columns with matching rownames?

我有一个包含 77 行和 460 列的数据框。第一列代表标题为“RS_number”的每一行的 rsID。每列都标有 SNP rsID(例如 rs4751)。

我需要将此数据框的尺寸限制为 76 X 76,以反映与变量“RS_number”相同的列名。我的第一个想法是使 row.names 等于第一列“RS_number”,但我不确定如何继续这样做以及如何将列限制为与行名相同的标识符。

下面是我用来创建数据框的代码和数据框的示例:

'''newdf = concatenated[concatenated$RS_number %in% colnames(hours)[3:76],] %>% 
 as.data.frame()'''



     RS_number rs1 rs2 rs3 rs4 rs10
[,1]  rs1       1.0 0.2 0.3 0.4 NA
[,2]  rs2       0.0 1.0 0.0 NA  0.2
[,3]  rs3       0.2 0.1 1.0 NA  NA
[,4]  rs4       0.0 0.1 0.5 1.0 NA
[,5]  rs5       NA  0.1 NA  0.2 NA
[,6]  rs9       0.5 0.4 0.1 0.0 0.6

我希望我的数据框只保留那些常见的列和 RS_numbers,包括 rs1、rs2、rs3、rs4,并排除 rs5 和 rs10。

我们可以将 intersect 与 'Rs_number' 列值和 'df1' 的列名称一起使用,然后将 'Rs_number' 与相交的元素连接到 select列

nm1 <- intersect(df1$Rs_number, names(df1))
df1[c("Rs_number", nm1)]