入力ファイルのいくつかの文字列を処理しようとしています。最初に文字列をベクトルからリストに変換し、次に一意の値のみに減らします。
次に、各リスト要素の単語を「:1」の区切り文字で文字列に変換します。
関数を単一のリスト要素で機能させることはできますが、ldply
fromplyr
を使用してリスト全体で機能させようとすると、各リスト要素の最後の単語しか取得できません。
コードは次のとおりです。
library(plyr)
df1 <- data.frame(id = seq(1,5,1), string1 = NA)
head(df1)
df1$string1[1] <- "This string is a string."
df1$string1[2] <- "This string is a slightly longer string."
df1$string1[3] <- "This string is an even longer string."
df1$string1[4] <- "This string is a slightly shorter string."
df1$string1[5] <- "This string is the longest string of all the other strings."
df1$string1 <- tolower(as.character(df1$string1))
df1$string1 <- gsub('[[:punct:]]',' ',df1$string1)
df1$string1 <- gsub('[[:digit:]]',' ',df1$string1)
df1$string1 <- gsub("\\s+"," ",df1$string1)
fdList1 <- strsplit(df1$string1, " ", df1$string1)
fdList2 <- lapply(fdList1, unique)
toString1 <- function(x){
string2 <- c()
#print(length(x[1][1]))
#print(x)
#print(class(x))
for(i in length(x)){
string2 <- paste0(string2, x[[i]], ":1 ", collapse="")
}
string2
}
df2 <- ldply(fdList2, toString1)
df2
v1 <- toString1(fdList2[2])
v1
df2
v1
間違っています。各リスト要素に似たベクトルが必要です。
助言がありますか?