我有一個充滿不適當間隔句子的數據集。我試圖想出一種方法來刪除一些空間。在R中進行迭代拼寫檢查單詞向量
我開始與我轉換成詞的數據幀中的一句話:
> word5 <- "hotter the doghou se would be bec ause the co lor was diffe rent"
> abc1 <- data.frame(filler1 = 1,words1=factor(unlist(strsplit(word5, split=" "))))
> abc1
filler1 words1
1 1 hotter
2 1 the
3 1 doghou
4 1 se
5 1 would
6 1 be
7 1 bec
8 1 ause
9 1 the
10 1 co
11 1 lor
12 1 was
13 1 diffe
14 1 rent
接下來,我用下面的代碼來嘗試和拼寫檢查,並結合是之前或之後的詞的組合詞其中:
abc2 <- abc1
i <- 1
while(i < nrow(abc1)){
print(abc2)
if(nrow(aspell(abc1$words1[i])) == 0){
print(paste(i,"Words OK",sep=" | "));flush.console()
i <- i + 1
}
else{
if(nrow(aspell(abc1$words1[i])) > 0 & i != 1){
preWord1 <- abc1$words1[i-1]
postWord1 <- abc1$words1[i+1]
badWord1 <- abc1$words1[i]
newWord1 <- factor(paste(preWord1,badWord1,sep=""))
newWord2 <- factor(paste(badWord1,postWord1,sep=""))
if(nrow(aspell(newWord1)) == 0 & nrow(aspell(newWord2)) != 0){
abc2[i,"words1"] <-as.character(newWord1)
abc2 <- abc2[-c(i+1),]
print(paste(i,"word1",sep=" | "));flush.console()
i <- i + 1
}
if(nrow(aspell(newWord1)) != 0 & nrow(aspell(newWord2)) == 0){
abc2[i ,"words1"] <-as.character(newWord2)
abc2 <- abc2[-c(i-1),]
print(paste(i,"word2",sep=" | "));flush.console()
i <- i + 1
}
}
}
}
玩這個了一段時間我來,我需要某種類型的迭代器,但我不確定如何實現它在R.任何建議結束後?
你能告訴我們如何不起作用?我認爲你可能正在尋找安樂死或樂隊的功能。如果你定義了你自己的函數,然後執行'lapply(abc1 $ words1,yourFunctionNameHere)',它會遍歷'adc1 $ words1'中的每個元素,並用作爲參數傳遞的那個元素調用你的函數。如果還有其他參數傳遞給該函數,則可以將這些參數傳遞給函數名稱 – 2012-08-13 09:16:21