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

使用unnest_tokens对歌词DataFrame前几行分词失败求助

问题原因分析

你遇到的错误是因为unnest_tokens()函数要求输入的列必须是字符向量,或者每个元素长度为1的字符列表。而你在处理前10行数据时,多余的data.frame(bigtest)操作可能导致列的类型发生了意外变化(比如变成因子或列表),虽然修改了列名,但实际传入函数的列不符合要求。

另外要注意,biggie[1:10,]本身已经是一个data.frame,不需要再用data.frame()重新包裹,这一步反而可能引入不必要的类型问题。

解决方法

步骤1:简化前10行的提取代码

直接提取前10行,保持和处理整个数据集一致的列名修改方式:

bigtest <- biggie[1:10, ]
colnames(bigtest)[1] <- 'biggie'

步骤2:确认并修正列的类型

在执行分词前,先检查列的类型是否为字符型:

class(bigtest$biggie)

如果输出不是"character",将列转换为字符型:

bigtest$biggie <- as.character(bigtest$biggie)

步骤3:执行分词操作

现在再运行unnest_tokens()就可以正常工作了:

bigind <- bigtest %>% unnest_tokens(word, biggie)
完整修正后的代码
# 加载必要包
library(dplyr)
library(tokenizers)
library(tidytext)

# 读取完整数据
biggie <- read.csv("C:/Users/First.Last/Desktop/biggie.csv", stringsAsFactors=FALSE)
colnames(biggie)[1] <- 'biggie'

# 处理前10行数据
bigtest <- biggie[1:10, ]
# 确认并修正列类型(可选但推荐)
if (class(bigtest$biggie) != "character") {
  bigtest$biggie <- as.character(bigtest$biggie)
}
# 执行分词
bigind <- bigtest %>% unnest_tokens(word, biggie)

你也可以用glimpse(bigtest)查看数据结构,直观确认biggie列是字符型且每行对应一句歌词,这样能更快排查潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:07:36