r - 根据每个元素的平方和排列向量列表
问题描述
x <- list(c(1,2), c(1,4), c(1,1))
我想根据每个向量元素的平方和来排列列表的向量。
三个向量的平方和:
1^2 + 2^2 = 5,
1^2 + 4^2 = 17,
1^2 + 1^2 = 2.
由于,2 < 5 < 17
,所需的输出将是:
vectors squaresum
c(1,1) 2
c(1,2) 5
c(1,4) 17
我正在考虑为平方和构建一个函数。然后使用该函数对向量进行排序。但无法正常进行。任何帮助都会得到帮助。
解决方案
您可以遍历列表以计算每个向量的平方和,并用于order()
按升序获取值的索引。然后,您可以使用它们对您的初始列表进行排序x
:
x[order(sapply(x, function(v) sum(v ** 2)))]
结果是:
[[1]]
[1] 1 1
[[2]]
[1] 1 2
[[3]]
[1] 1 4
推荐阅读
- c# - 如何检查列表视图是否包含c# UWP中的任何内容
- design-patterns - 轮询数据仓库设计
- python - 如何将两个列表与第三个列表进行比较,如果存在匹配项,则将它们分组到 Python 中的嵌套列表中?
- swift - 将字典映射到 Swift 中的结构数组
- django - Django:从不同的网络访问
- c# - creating a list of anonymous type and passing to view
- javascript - 在 XML 文件中搜索
- php - Display json api data in html
- python - Python Requests Module Not Getting Latest Data from Web Server
- apache-spark - 如何使用 scala 在 Spark 中评估 minHashLSH?