使用R语言将字符行转换为String类型的问题求助
解决NLP包
as.String转换dataframe列时的重复值问题 你遇到的问题核心是NLP::as.String()的工作逻辑:它会把整个输入向量转换成单个String类对象,而非对每个元素单独转换。当你把这个单个对象赋值给dataframe的列时,R会自动将其重复填充到每一行,最终就出现了所有行的string_text1值完全相同的情况。
要实现每行的text_1值单独转换为String类,你需要对向量的每个元素逐个应用as.String(),可以用lapply()来完成这个操作:
library(NLP) # 重现你的原始数据 text_1 <- c("Test Test Test", "Sample Data") text_2 <- c("Sample Sample Sample", "Test Data") df <- data.frame(text_1, text_2, stringsAsFactors = FALSE) # 逐个元素转换为String类 df$string_text1 <- lapply(df$text_1, as.String)
现在验证结果:
# 查看第一行的string_text1类型和值 df$string_text1[[1]] # 输出:Class 'String' chr "Test Test Test" # 查看第二行的string_text1类型和值 df$string_text1[[2]] # 输出:Class 'String' chr "Sample Data"
这样就能得到你期望的效果:每行的string_text1对应该行text_1的String类对象,不会出现重复填充的问题。
如果你习惯使用purrr包,也可以用purrr::map()替代lapply(),效果完全一致:
library(purrr) df$string_text1 <- map(df$text_1, as.String)
内容的提问来源于stack exchange,提问作者JBH
相关产品推荐
相关产品推荐

