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

如何从50个向量的值与名称创建R语言DataFrame?

将多个向量转换为包含值和向量名的DataFrame

我有50个命名向量,希望将它们的所有值和对应的向量名称整合到一个DataFrame中,格式参照以下示例:

示例输入向量

vector_a <- c("a1","a2", "a3","a4")
vector_cx <- c("1","2","3")
vector_3 <- c("x1","x2")

预期输出

对应的DataFrame生成代码:

data.frame(values = c("a1","a2", "a3","a4","1","2","3","x1","x2"),
           vector_names = c("vector_a","vector_a", "vector_a","vector_a","vector_cx","vector_cx","vector_cx","vector_3","vector_3"))

生成的表格结构:

values vector_names
1     a1     vector_a
2     a2     vector_a
3     a3     vector_a
4     a4     vector_a
5      1    vector_cx
6      2    vector_cx
7      3    vector_cx
8     x1     vector_3
9     x2     vector_3

自动化解决方案(适配50个向量)

手动拼接50个向量效率极低,推荐以下两种自动化方法:

方法1:基础R原生实现

利用mget()和stack()快速整合:

# 自动获取所有以"vector_"开头的向量(如果你的向量有统一前缀)
target_vectors <- ls(pattern = "^vector_")
vector_list <- mget(target_vectors)

# 转换为DataFrame并调整列名
result_df <- stack(vector_list)
names(result_df) <- c("values", "vector_names")

如果向量没有统一命名前缀,手动列出所有向量名称即可:

# 列出所有50个向量的名称
target_vectors <- c("vector_a", "vector_cx", "vector_3", "...") # 补充剩余向量名
vector_list <- mget(target_vectors)
result_df <- stack(vector_list)
names(result_df) <- c("values", "vector_names")

方法2:tidyverse工具链实现

如果使用tidyverse生态,用purrr和tibble处理更简洁:

library(tidyverse)

# 获取目标向量列表
vector_list <- mget(ls(pattern = "^vector_"))

# 转换为目标格式
result_df <- vector_list %>%
  enframe(name = "vector_names", value = "values") %>%
  unnest(values)

两种方法生成的结果都和示例格式完全一致,无需手动拼接每个向量的值和名称。

内容的提问来源于stack exchange,提问作者Luis Carmona Martinez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:30:44