R'中列表列的排序元素;s数据表
我需要按字母顺序对data.table的“list”列的元素进行排序,并将它们强制为R的data.table的另一个中间列中的字符向量。目前,无法发现第一行的错误 以下代码用于生成原始data.table:R'中列表列的排序元素;s数据表,r,data.table,R,Data.table,我需要按字母顺序对data.table的“list”列的元素进行排序,并将它们强制为R的data.table的另一个中间列中的字符向量。目前,无法发现第一行的错误 以下代码用于生成原始data.table: my_dt在对列表元素进行排序之前,您可以简化代码并使用unlist my_dt[, D := toString(sort(unlist(C))), by = 1:nrow(my_dt)][] # A B C
my_dt在对列表元素进行排序之前,您可以简化代码并使用unlist
my_dt[, D := toString(sort(unlist(C))), by = 1:nrow(my_dt)][]
# A B C D
# 1: 1 9.245525 mango,pear,apple apple, mango, pear
# 2: 2 10.195239 mango,pear,apple apple, mango, pear
# 3: 3 13.277489 mango,pear,apple apple, mango, pear
# 4: 4 8.248815 mango,pear,apple apple, mango, pear
# 5: 5 10.243520 mango,pear,apple apple, mango, pear
# 6: 1 12.724261 mango,pear,apple apple, mango, pear
# 7: 2 9.530758 mango,pear,apple apple, mango, pear
# 8: 3 7.893234 mango,pear,apple apple, mango, pear
# 9: 4 8.260433 mango,pear,apple apple, mango, pear
#10: 5 9.219746 mango,pear,apple apple, mango, pear
#11: 1 8.305300 mango,pear,apple apple, mango, pear
#12: 2 9.478721 mango,pear,apple apple, mango, pear
#13: 3 9.171161 mango,pear,apple apple, mango, pear
#14: 4 9.633898 mango,pear,apple apple, mango, pear
#15: 5 10.814112 mango,pear,apple apple, mango, pear
如果列D
应该是列表列,请执行以下操作
my_dt[, D := list(list(sort(unlist(C)))), by = 1:nrow(my_dt)]
my_dt
请参阅帖子:您可以简化代码,并在对列表元素进行排序之前使用取消列表
:
my_dt[, D := toString(sort(unlist(C))), by = 1:nrow(my_dt)][]
# A B C D
# 1: 1 9.245525 mango,pear,apple apple, mango, pear
# 2: 2 10.195239 mango,pear,apple apple, mango, pear
# 3: 3 13.277489 mango,pear,apple apple, mango, pear
# 4: 4 8.248815 mango,pear,apple apple, mango, pear
# 5: 5 10.243520 mango,pear,apple apple, mango, pear
# 6: 1 12.724261 mango,pear,apple apple, mango, pear
# 7: 2 9.530758 mango,pear,apple apple, mango, pear
# 8: 3 7.893234 mango,pear,apple apple, mango, pear
# 9: 4 8.260433 mango,pear,apple apple, mango, pear
#10: 5 9.219746 mango,pear,apple apple, mango, pear
#11: 1 8.305300 mango,pear,apple apple, mango, pear
#12: 2 9.478721 mango,pear,apple apple, mango, pear
#13: 3 9.171161 mango,pear,apple apple, mango, pear
#14: 4 9.633898 mango,pear,apple apple, mango, pear
#15: 5 10.814112 mango,pear,apple apple, mango, pear
如果列D
应该是列表列,请执行以下操作
my_dt[, D := list(list(sort(unlist(C)))), by = 1:nrow(my_dt)]
my_dt
从帖子中可以看到:谢谢马库斯,我认为这很有效。您能详细介绍一下toString函数吗?我是否正确地注意到,在“by”参数中使用1:nrow(my_dt)通常是避免循环的一种优雅方式?如果有人能告诉我在我的方法中哪里发生了错误,我也将不胜感激。再次感谢。@ds\u新手我正要删除答案,因为toString
resturns-惊喜-一个字符串,而不是代码中的列表。by=1:nrow(my_dt)
代码只是表示我们正在按行工作。这有帮助吗?@ds_newbie typetoString.default
查看源代码。。。基本上,它是一个用于粘贴(x,collapse=“,”)的包装器
Yes,Markus,toString()结果是一个字符向量,我可以很好地处理它。下一步实际上是将“排序”条目列转换为字符向量。但是,我不确定我在问题中共享的代码中可能出现的错误。谢谢Markus,我认为这是可行的。您能详细介绍一下toString函数吗?我是否正确地注意到,在“by”参数中使用1:nrow(my_dt)通常是避免循环的一种优雅方式?如果有人能告诉我在我的方法中哪里发生了错误,我也将不胜感激。再次感谢。@ds\u新手我正要删除答案,因为toString
resturns-惊喜-一个字符串,而不是代码中的列表。by=1:nrow(my_dt)
代码只是表示我们正在按行工作。这有帮助吗?@ds_newbie typetoString.default
查看源代码。。。基本上,它是一个用于粘贴(x,collapse=“,”)的包装器Yes,Markus,toString()结果是一个字符向量,我可以很好地处理它。下一步实际上是将“排序”条目列转换为字符向量。但是,我不确定我在问题中共享的代码中可能出现的错误。
my_dt[, D := list(list(sort(unlist(C)))), by = 1:nrow(my_dt)]
my_dt