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

在R语言中使用mutate函数时如何实现行复制?

问题解决方法

首先你写的代码有个语法错误:mutate(demo = c("audience 1", "audience 2"))这行最后少了一个右括号,补上之后还是达不到你要的效果——因为mutate是给数据框的每一行新增列值,而你需要的是把每一行扩展成两行,分别对应两个受众分组。

要实现每个game值都和audience 1、audience 2配对的效果,推荐两种简单方法:

方法一:用dplyr+tidyr的列表展开

先给每一行的demo列赋值一个包含两个受众的列表,再用unnest_longer把列表展开成多行:

library(dplyr)
library(tidyr)

# 假设你的old_df长这样:old_df <- tibble(game = c(1, 2))
new_df <- old_df %>%
  mutate(demo = list(c("audience 1", "audience 2"))) %>%
  unnest_longer(demo)

方法二:用tidyr的crossing交叉合并

直接把原数据框和受众向量做交叉组合,自动生成所有配对:

library(tidyr)

new_df <- crossing(old_df, demo = c("audience 1", "audience 2"))

为什么原代码不行?

就算补上缺失的右括号,mutate(demo = c("audience 1", "audience 2"))只会按顺序给每一行赋值对应的向量元素——如果原数据行数不是2,会直接报错;如果刚好是2行,也只是第一行对应audience 1,第二行对应audience 2,没法实现每个game都对应两个受众的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:25:28