我使用R进行阿拉伯语文本挖掘 并且我想检查单词是否超过6个字符,请进行一些更改
,它正在工作,但仅返回第一个单词 这是我的代码
LL<- "بنزين سائقين تعملين مخينعو ينام"
n2<- length(LL)
for (i in 1:n2 ){
for (j in 1:n2){
o[j] <-(strsplit(LL[i], " "))
K<-ifelse(nchar(o[[j]][j])>=6 ,gsub('(?<=\\p{L})\\x{064A}\\x{0646}$', '', o[[j]][j], perl = TRUE),o[[j]][j])
return( print(K))
} }
[1] "بنزين"
我想我需要添加j ++ 但我不知道该在哪里添加 谢谢
答案 0 :(得分:2)
您可以无循环执行该任务
words <- unlist(strsplit(LL, " "))
nchar(words)
# returns
[1] 5 6 6 6 4
其余的可能也可以使用矢量化来完成,例如
K <- character(length(words))
K[nchar(words) < 6] <- words[nchar(words) < 6]
K[nchar(words) > 5] <- gsub('(?<=\\p{L})\\x{064A}\\x{0646}$', '',
words[nchar(words) > 5], perl = TRUE)
# result
K
[1] "بنزين" "سائق" "تعمل" "مخينعو" "ينام"
附带说明:
return
-我认为这不是使用它的正确方法。一个简单的print(...)
就足够了。ifelse
时,您可能要检查条件语句的长度,因为这将确定结果的大小。