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

如何用R原生函数将矩阵多列嵌套为数据框单列(含标签列)

解决方案

这里有两种用R原生函数实现的方法,都能把矩阵的前4列转为数据框中存储4维向量的单列,同时保留第5列作为标签:

方法1:使用apply() + I()

先构造题目中的矩阵:

a <- matrix(1:20, 4, 5)

然后通过逐行处理生成目标数据框:

# 提取前4列的每一行转为向量,用I()保留向量结构
result_df <- data.frame(
  Data = I(apply(a[, 1:4], 1, function(x) x)),
  Label = a[, 5]
)

打印结果验证:

print(result_df)

输出如下:

Data Label
1 1, 5, 9, 13    17
2 2, 6, 10, 14   18
3 3, 7, 11, 15   19
4 4, 8, 12, 16   20

方法2:使用split() + I()

这种方法通过按行拆分矩阵的前4列来生成向量列表:

# 按行拆分前4列,得到每个元素为4维向量的列表
data_list <- split(a[, 1:4], row(a[, 1:4]))
# 组合成数据框
result_df <- data.frame(
  Data = I(data_list),
  Label = a[, 5]
)

关键说明

  • I()函数是核心:它会告诉数据框不要将向量拆分为多个列,而是保留其作为单个向量的结构,最终Data列是列表列,每个元素都是一个4维向量。
  • 若要访问某一行的4维向量,可以用result_df$Data[[n]](n为行号),比如result_df$Data[[1]]会返回[1] 1 5 9 13。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:31:07