首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据较大数据的列顺序重新排序1维数据(R)

根据较大数据的列顺序重新排序1维数据(R)
EN

Stack Overflow用户
提问于 2022-10-26 19:28:36
回答 1查看 19关注 0票数 0
代码语言:javascript
复制
relevant_ods_reordered <- relevant_ods[names(cpm)]

上面的内容旨在重新排序dataframe relevant_ods的列名:

代码语言:javascript
复制
     Plate1_DMSO_A01 Plate1_DMSO_B01 Plate1_DMSO_C01 Plate1_Lopinavir_D01
OD595           0.431          0.4495          0.4993               0.5785
      Plate1_DMSO_E01 Plate1_DMSO_F01 Plate1_DMSO_G01 Plate1_DMSO_H01
OD595          0.5336          0.5133           0.527          0.5413
      Plate1_DMSO_C12 Plate1_DMSO_D12 Plate1_Lopinavir_E12 Plate1_DMSO_F12
OD595          0.4137          0.4274               0.5241          0.4264
      Plate1_DMSO_G12 Plate1_DMSO_H12
OD595          0.4561          0.4767

若要匹配大得多的数据帧中列的顺序,请执行以下操作:

代码语言:javascript
复制
[1] "Plate1_DMSO_A01"         "Plate1_DMSO_A12"        
 [3] "Plate1_DMSO_B01"         "Plate1_DMSO_B12"        
 [5] "Plate1_DMSO_C01"         "Plate1_DMSO_C12"        
 [7] "Plate1_DMSO_D12"         "Plate1_DMSO_E01"        
 [9] "Plate1_DMSO_F01"         "Plate1_DMSO_F12"        
 [11] "Plate1_DMSO_G01"         "Plate1_DMSO_G12"        
 [13] "Plate1_DMSO_H01"         "Plate1_DMSO_H12"        
 [15] "Plate1_Lopinavir_D01"    "Plate1_Lopinavir_E12"   
 [17] "Plate1_NS1519_22009_A02" "Plate1_NS1519_22009_A04"
 [19] "Plate1_NS1519_22009_A05" "Plate1_NS1519_22009_A06"
 [21] "Plate1_NS1519_22009_A07" "Plate1_NS1519_22009_A08"
 [23] "Plate1_NS1519_22009_A09" "Plate1_NS1519_22009_A10"
 [25] "Plate1_NS1519_22009_A11" "Plate1_NS1519_22009_B02"
 [27] "Plate1_NS1519_22009_B03" "Plate1_NS1519_22009_B04"
 [29] "Plate1_NS1519_22009_B05" "Plate1_NS1519_22009_B06"

等。

很明显,有一个返回

代码语言:javascript
复制
Error in `[.data.frame`(relevant_ods, names(cpm)) : 
  undefined columns selected

由于列数之间的不匹配

我试过了

代码语言:javascript
复制
relevant_ods_reordered <- relevant_ods[names(cpm),]
relevant_ods_reordered <- select(relevant_ods, names(cpm))
relevant_ods_reordered <- match(relevant_ods, names(cpm))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-26 19:42:28

用R基,你需要找到共同的名字。intersect对此很好,并保留了其第一个参数的顺序:

代码语言:javascript
复制
relevant_ods[intersect(names(cpm), names(relevant_ods))]

或者使用dplyr,使用选择助手any_of

代码语言:javascript
复制
select(relevant_ods, any_of(names(cpm)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74213278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档