首页 > 解决方案 > 尝试使用循环对列表中的向量进行排序时的奇怪行为

问题描述

我想对列表中的向量进行排序。我尝试了以下方法:

test <- list(c(2,3,1), c(3,2,1), c(1,2,3))
for (i in length(test)){
  test[[i]] <- sort(test[[i]])
}
test

返回列表不变(向量未排序):

[[1]]
[1] 2 3 1

[[2]]
[1] 3 2 1

[[3]]
[1] 1 2 3

但是,当我在循环外手动排序时,订单将被存储:

test[[1]]
[1] 2 3 1
test[[1]] <- sort(test[[1]])
test[[1]]
[1] 1 2 3

为什么循环中的行为不同?我希望循环将三个向量 c(1,2,3) 存储在列表中。我错过了什么?

标签: rlistloopssortingvector

解决方案


我只是认为循环只循环一个元素,因为length(test) = 3. 因此我应该使用for (i in 1:length(test)).


推荐阅读