r - 将标点符号添加到 data.frame r 中的列表和 coreace
问题描述
我有一个单词和标点符号库。我正在尝试用它制作一个数据框,以便以后可以使用它。原始数据集有 2,000,000 行标点符号,但它是一个列表。我无法从其余单词中解析出列表中的标点符号。我想要单词中每个标点符号之间的空格。我可以很容易地在 excel 中找到替换。但是想在 R 中执行它。我有一个名为 = df 的示例,而我想要在 r 中的输出称为 = output。我附上了下面的代码和我到目前为止所拥有的。我尝试了 str_split ,但它删除了“How”并且没有返回任何“”。
#--------Upload 1st dataset and edit-------#
library("stringr")
sent1<-c("How did Quebec? 1 2 3")
sent2<-c("Why does valve = .245? .66")
sent3<-c("How do I use a period (.) comma [,] and hyphen {-} to columns?")
df <- data.frame(text = c(sent1,sent2,sent3))
df <- as.matrix(df)
str_split(df, " ")#spaces
#-------------output-------------#
words1<-c("How", "did" ,"Quebec"," ? ","1", "2" ,"3")
words2<-c('Why', "does", "valve"," = ",".245","?" ,".66")
words3<-c("How" ,"do", "I", "use", "a", "period", '(',".",')', "comma" ,'[',",","]" ,"and" ,"hyphen" ,"{","-",'}' ,"to" ,"columns",'?')
output<-data.frame(words1,words2,words3)
解决方案
这是一个完成工作的粗略概念:
首先拆分所有不是单词字符的字符(受另一个答案的启发)。然后获取最大长度并填写其他长度相同。
dfsplt <- strsplit( gsub("([^\\w])","~\\1~", df, perl = TRUE), "~")
dfsplt <- lapply(dfsplt, function(x) x[!x %in% c("", " ")])
n <- max(lengths(dfsplt))
sapply(dfsplt, function(x) {x <- rep(x, ceiling(n / length(x))); x[1:n]})
# or
sapply(dfsplt, function(x) x[(1:n - 1) %% length(x) + 1])
[,1] [,2] [,3]
[1,] "How" "Why" "How"
[2,] "did" "does" "do"
[3,] "Quebec" "valve" "I"
[4,] "?" "=" "use"
[5,] "1" "." "a"
[6,] "2" "245" "period"
[7,] "3" "?" "("
[8,] "How" "." "."
[9,] "did" "66" ")"
[10,] "Quebec" "Why" "comma"
[11,] "?" "does" "["
[12,] "1" "valve" ","
[13,] "2" "=" "]"
[14,] "3" "." "and"
[15,] "How" "245" "hyphen"
[16,] "did" "?" "{"
[17,] "Quebec" "." "-"
[18,] "?" "66" "}"
[19,] "1" "Why" "to"
[20,] "2" "does" "columns"
[21,] "3" "valve" "?"
推荐阅读
- dart - 如何在 Flutter 中创建类似于 android 照片应用的多选 gridview 布局?
- url - 是否有一个 URL 可用于通过代理重定向另一个 URL?
- algorithm - 恢复时间最短的路径
- php - 如何使用不同的变量在函数中预定义变量?
- handlebars.js - 即使陈述为真,车把 if/else 也不起作用
- json - 如何在命令行中使用 utf 8 漂亮地打印 json?
- html - 将进度跟踪器更改为父容器的完整跨度
- python - 如何使用 PIL 优化调色板图像大小?
- python - pandas 根据前缀重塑 long
- objective-c - 通过Objective C中的lat long列表确定提供的lat long是否在区域中