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

R函数按字符串长度排序列,然后按字母表排序?,r,sorting,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

我想先按字符串长度,然后按字母表对数据帧中的一列进行排序,我尝试了以下代码:

#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
我想对“条形码”列进行排序。
谢谢您的时间。

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

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

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

GSN我想添加一个tidyverse解决方案

library(tidyverse)

GSN_sorted =  GSN %>%
    mutate(barcode = as.character(barcode)) %>%
    arrange(str_length(barcode), barcode)
注意Alex A最初指出的因子到字符的转换