按值对列表排序,同时保留R中的数字键
我知道这是一个常见的问题,但是由于数字键的原因,按值对列表排序,同时保留R中的数字键,r,R,我知道这是一个常见的问题,但是由于数字键的原因,r[order(unlist(r))]的常见答案不起作用。经过一段时间的搜索,我找不到任何答案。我确实看到了,但它使用了数据帧,我不知道如何在我的函数中实现数据帧 我有一个使用r[[I]]创建的值列表,不知道为什么您希望使用列表而不是向量。 使用以下虚拟变量,请尝试: > r [[1]] [1] 1 [[2]] [1] 10 [[3]] [1] 2 [[4]] [1] 4 [[5]] [1] 3 setNames(r[order(u
r[order(unlist(r))]
的常见答案不起作用。经过一段时间的搜索,我找不到任何答案。我确实看到了,但它使用了数据帧,我不知道如何在我的函数中实现数据帧
我有一个使用r[[I]]创建的值列表,不知道为什么您希望使用
列表
而不是向量
。
使用以下虚拟变量,请尝试:
> r
[[1]]
[1] 1
[[2]]
[1] 10
[[3]]
[1] 2
[[4]]
[1] 4
[[5]]
[1] 3
setNames(r[order(unlist(r))],order(unlist(r)))
$`1`
[1] 1
$`3`
[1] 2
$`5`
[1] 3
$`4`
[1] 4
$`2`
[1] 10
“数字键”只是列表中的索引。要在已排序的列表中保留原始索引,只需根据这些原始索引向列表元素添加名称即可 例如:
r=list(439675063402608449058565676146)
#>r
#[[1]]
#[1] 4396750
#
#[[2]]
#[1] 6340260
#
#[[3]]
#[1] 8449058
#
#[[4]]
#[1] 5676146
名称(r)您是否在寻找顺序(未列出(r))[1:3]
?我建议使用更有意义的列表名称。或者将其放在带有“id”列和“value”列的数据框中。如果您没有显示其他列表组件,可能会显示一个list
列。出于某种原因,它对我不起作用,但另一个答案起作用。它是stats
包的一部分,可能您的全球环境中没有它?
knnacc <- function(e){
dist = list()
for(j in 1:10000) {
dist[[j]] <- distance(TEST[["image"]][[e]], TRAIN[["image"]][[j]])
}
#dist <- dist[order(unlist(dist))]
return(dist)
}
> r
[[1]]
[1] 1
[[2]]
[1] 10
[[3]]
[1] 2
[[4]]
[1] 4
[[5]]
[1] 3
setNames(r[order(unlist(r))],order(unlist(r)))
$`1`
[1] 1
$`3`
[1] 2
$`5`
[1] 3
$`4`
[1] 4
$`2`
[1] 10
r = list(4396750, 6340260, 8449058, 5676146)
#> r
#[[1]]
#[1] 4396750
#
#[[2]]
#[1] 6340260
#
#[[3]]
#[1] 8449058
#
#[[4]]
#[1] 5676146
names(r) <- as.character(1:length(r))
r <- r[order(unlist(r))]
#> r
#$`1`
#[1] 4396750
#
#$`4`
#[1] 5676146
#
#$`2`
#[1] 6340260
#
#$`3`
#[1] 8449058