You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按元素平方和对R语言列表中的向量进行排序?

按向量平方和排序列表的解决方案

没问题,我来帮你搞定这个排序需求!你已经理清了平方和的计算逻辑,接下来只需要把这个逻辑和R的排序工具结合起来就行,下面是具体的实现步骤:

首先,先定义你的原始列表:

x <- list(c(1,2), c(1,4), c(1,1))

第一步:计算每个向量的平方和

我们可以用sapply()遍历列表里的每个向量,对每个向量计算元素平方后的总和:

# 生成每个向量对应的平方和向量
square_sums <- sapply(x, function(vec) sum(vec^2))

执行后square_sums会得到c(5, 17, 2),正好对应你计算的结果。

第二步:按平方和对列表排序

用order()函数获取平方和升序排列的索引,再用这个索引重新排列原始列表:

# 按平方和从小到大排序列表
sorted_x <- x[order(square_sums)]

第三步:整理成你想要的表格格式

为了输出成你期望的“向量-平方和”表格形式,我们可以把排序后的向量转成字符串,和对应的平方和组合成数据框:

# 构建结果数据框
result <- data.frame(
  vectors = sapply(sorted_x, function(v) paste0("c(", paste(v, collapse = ","), ")")),
  squaresum = square_sums[order(square_sums)]
)

# 打印结果(去掉行号更美观)
print(result, row.names = FALSE)

执行这段代码后,你会得到完全符合预期的输出:

vectors squaresum
 c(1,1)         2
 c(1,2)         5
 c(1,4)        17

如果你想更简洁一点,也可以把步骤合并成一行(不过分开写可读性更强):

result <- data.frame(
  vectors = sapply(x[order(sapply(x, function(v) sum(v^2)))], function(v) paste0("c(", paste(v, collapse = ","), ")")),
  squaresum = sort(sapply(x, function(v) sum(v^2)))
)

内容的提问来源于stack exchange,提问作者Dipankar Mondal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:45:36