R函数按字符串长度然后按字母对列进行排序?

标签 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

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

最佳答案

您可以向数据框中添加另一列,其中包含条码中的字符数,然后以通常的方式进行排序。

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

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

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

关于R函数按字符串长度然后按字母对列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28838696/

相关文章:

r - 检查字符串是否包含 R 中的所有空格

c++ - 使用 configure.ac 找不到 boost c++

python - 将列添加到 rpy2 中的 DataFrame

ios - 按键中对象的属性对字典进行排序/过滤

list - Scala错误: value sort is not a member of List

c++ - 对每个元素都是一对的 vector 元素进行排序

在数据帧的列中紧跟其后用数字替换前导 0

c# - 排序 IList 时未调用比较器

arrays - 如何使用 jq 对可能不存在的数组进行排序?

r - R中向量的向量?