R函数按字符串长度排序,然后按字母排序?

时间:2015-03-03 18:00:28

标签: r sorting

我想先按字符串长度排序我的数据框中的一列然后按字母表排序,我尝试下面的代码:

#sort column by string length then alphabet
GSN[order(nchar(GSN[,3]),GSN[,3]),]

但我收到了错误

Error in nchar(GSN[, 3]) : 'nchar()' requires a character vector

我的数据如下:

    Flowcell Lane    barcode         sample         plate row column
314       NA   NA AACAGACATT   LD06_7620SDS GSN1_Hind384D   B      4
307       NA   NA  AACAGCACT   LG10_2688SDS GSN1_Hind384D   C      3
289       NA   NA     AACCTC  U09_105007SDS GSN1_Hind384D   A      1
232       NA   NA AACGACCACC         13_232 GSN1_Hind384C   H      5
10        NA   NA AACGCACATT          13_10 GSN1_Hind384A   B      2
165       NA   NA      AACGG         13_165 GSN1_Hind384B   E      9

我想排序“条形码”列。 谢谢你的时间。

2 个答案:

答案 0 :(得分:3)

您可以在数据框中添加另一列,其中包含条形码中的字符数,然后按照常规方式排序。

GSN <- transform(GSN, n=nchar(as.character(barcode)))

GSN[with(GSN, order(n, barcode)), ]

您遇到的问题似乎是因为R认为barcode是一个因素而不是字符向量,因此nchar()无效。通过as.character()将其转换为字符可解决此问题。

答案 1 :(得分:0)

我想添加一个tidyverse解决方案

<link rel="preload" as="font" href="./assets/styles/vendor/fonts/bootstrap-icons.woff" type="font/woff2" crossorigin="anonymous">
<link rel="preload" as="font" href="./assets/styles/vendor/fonts/bootstrap-icons.woff2" type="font/woff2" crossorigin="anonymous">

注意 Alex A 最初指出的字符转换因素。