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

如何使用R的dplyr或tidyr按指定向量扩展数据框每行?

生成数据框与向量的所有组合解决方案

优先推荐:tidyr 解决方案

tidyr 提供了多个简洁的函数来生成笛卡尔积组合:

  1. 使用 expand_grid()(保留输入顺序)
library(tidyr)

df1 <- data.frame(v = paste0('P', 1:3))
val <- c("cherry", "apple", "kiwi")

# 生成所有组合,指定列名
df2 <- expand_grid(v = df1$v, fruit = val)
  1. 使用 crossing()(自动排序结果)
    crossing() 和 expand_grid() 功能类似,但会自动对结果进行排序:
df2 <- crossing(v = df1$v, fruit = val)

dplyr + tidyr 组合方案

如果需要结合 dplyr 的管道操作,可以先给每行添加包含所有向量元素的列表列,再展开:

library(dplyr)
library(tidyr)

df2 <- df1 %>%
  mutate(fruit = list(val)) %>%  # 给每行添加包含全部val的列表列
  unnest(fruit)  # 展开列表列生成所有组合

基础R备选方案

如果不想加载额外包,可以使用基础R的 expand.grid():

df2 <- expand.grid(v = df1$v, fruit = val, stringsAsFactors = FALSE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:53:11