gpt4 book ai didi

r - 在 data.table 向量中对列表进行排序

转载 作者:行者123 更新时间:2023-12-01 11:48:28 26 4
gpt4 key购买 nike

我有一个字符串数据表,我试图将其转换为列表并进行排序而不对向量本身进行排序:

> DT <- data.table(x=c("A11, A12, A41",
+ "A11, A41, B11, A6, A21",
+ "A41, A12",
+ "A12, A41",
+ "A12, A6, B41, A93"));DT
x
1: A11, A12, A41
2: A11, A41, B11, A6, A21
3: A41, A12
4: A12, A41
5: A12, A6, B41, A93

我需要去:

                        x
1: A11, A12, A41
2: A11, A21, A41, A6, B11
3: A12, A41
4: A12, A41
5: A12, A6, A93, B41

我已经尝试使用一堆 ordering、as.listsdata.frames,以及data.table 我试着写的函数:

sortlists <- function(DT,col){
for(i in 1:length(DT[,col])){
DT[i,col]=order(DT[i,col])
}
}

这会引发错误,表明我的列位置大于 ncol(x)。无论如何,必须有更好的方法来获得我想要的结果。我是 R 的新手,也是 data.tables 的新手(我想更多地了解它,因为我听到了一些好消息)所以非常感谢任何帮助!

最佳答案

这将拆分字符向量,然后对每一行进行排序并返回一个列表

 DT[, list(y =  lapply(strsplit(x,', '), sort))]
y
1: A11,A12,A41
2: A11,A21,A41,A6,B11
3: A12,A41
4: A12,A41
5: A12,A6,A93,B41

还有。如果你真的想要每一行的单个字符串

DT[, list(y =  vapply(strsplit(x,', '), function(x) paste(sort(x), collapse = ', '), FUN.VALUE =character(1)))]

关于r - 在 data.table 向量中对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com