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

R语言按列值扩展行时出现'undefined columns selected'错误

问题:根据'total'列扩展数据行时出现'undefined columns selected'错误

问题背景

我有一个名为google_removal的数据集,包含7列14468行。想要根据total列的数值(每行观测的重复次数)扩展数据行数,但始终收到undefined columns selected错误。已确认total列名正确,且问题并非遗漏逗号导致。

数据集示例

'period ending'  'country' 'code' 'product'  'reason' 'total' 'year'
2011-06-30       Argentina   AR    Blogger   Defamation 4      2011
2011-06-30       Argentina   AR    Blogger   Privacy    1      2011 
2011-06-30       Argentina   AR    GoogleAd  Defamation 1      2011  
2011-06-30       Argentina   AR    WebSearch Defamation 6      2011 

预期扩展效果

'period_ending'  'country' 'code' 'product'  'reason'        'year'
2011-06-30       Argentina   AR    Blogger   Defamation       2011
2011-06-30       Argentina   AR    Blogger   Defamation       2011
2011-06-30       Argentina   AR    Blogger   Defamation       2011
2011-06-30       Argentina   AR    Blogger   Defamation       2011
2011-06-30       Argentina   AR    Blogger   Privacy          2011 
2011-06-30       Argentina   AR    GoogleAd  Defamation       2011  
2011-06-30       Argentina   AR    WebSearch Defamation       2011 
2011-06-30       Argentina   AR    WebSearch Defamation       2011 
2011-06-30       Argentina   AR    WebSearch Defamation       2011 
2011-06-30       Argentina   AR    WebSearch Defamation       2011 
2011-06-30       Argentina   AR    WebSearch Defamation       2011 
2011-06-30       Argentina   AR    WebSearch Defamation       2011 

尝试过的代码

google_removal_expanded <- google_removal[seq_len(nrow(google_removal), google_removal$total), 1:13000]

google_removal_expanded <- google_removal[rep(row.names(google_removal), google_removal$total), 1:13000]

错误信息

Error in [.data.frame(google_removal, rep(row.names("total"), google_removal$total), : undefined columns selected

测试数据

dput(head(google_removal))
structure(list(period_ending = c("2011-06-30", "2011-06-30", 
"2011-06-30", "2011-06-30", "2011-06-30", "2011-06-30"), country = c("Argentina", 
"Argentina", "Argentina", "Argentina", "Argentina", "Argentina"
), code = c("AR", "AR", "AR", "AR", "AR", "AR"), product = c("Blogger", 
"Blogger", "Google Ads", "Web Search", "Web Search", "Web Search"
), reason = c("Defamation", "Privacy and Security", "Defamation", 
"Defamation", "Other", "Privacy and Security"), total = c(4L, 
1L, 1L, 6L, 1L, 8L), year = c("2011", "2011", "2011", "2011", 
"2011", "2011")), row.names = c(NA, 6L), class = "data.frame")

解决方案

错误原因

代码中的列索引1:13000远超数据集实际列数(仅7列),导致R无法找到对应列,触发错误。同时第一个代码里seq_len的用法错误,该函数仅接受单个参数,无法生成对应重复次数的行索引。

正确实现代码

基础R方式

# 生成重复行索引:每行按total列数值重复
row_idx <- rep(seq_len(nrow(google_removal)), google_removal$total)
# 提取行并移除total列(或保留所有列,按需选择)
google_removal_expanded <- google_removal[row_idx, -6]

tidyverse方式(更简洁)

library(tidyverse)
google_removal_expanded <- google_removal %>% 
  uncount(total) %>% 
  select(-total) # 可选,移除total列

效果验证

运行上述代码后,数据集会按照total列的数值扩展行数,得到预期结果,且不会出现列选择错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:58:07