在 R:How 中,我是否在循环中遍历字符串?
In R:How do I itearate through character strings in a loop?
我正在尝试从 for 循环中的向量访问字符串。
我有这样一个语料库:
library(tm)
corpus = Corpus(VectorSource(c("cfilm,cgame,ccd","cd,film,cfilm")))
我的目标是摆脱所有不必要的 "c" 字符。请注意,这意味着我不想从 cd 中删除 c,但要删除 ccd、cgame 等等。
我使用这个函数,它接受一个语料库并删除一个术语和第二个术语。
toString = content_transformer(function(x,from,to)gsub(from, to, x))
因此,例如,要将 cgame 替换为 game,我使用
corpus = tm_map(corpus,toString,"cgame","game")
现在,我不想为所有术语重复这一行,而是想使用一个循环,使用具有相关术语的向量迭代所有可能的替换。
replace = c("game","film","cd")
我尝试了两种方法,但其中 none 行得通:
for(i in replace){tm_map(corpus,toString,paste("c",get(i),sep=""),get(i))}
和
for(i in 1:length(replace)){tm_map(corpus,toString,paste("c",replace[i],sep=""),replace[i])}
在第一种情况下,R 告诉我它找不到 get(i) 接收到的对象:Error in get(i) : object 'game' not found
。
第二种,没有报错信息,但语料库内没有任何变化。
如何将向量中的项目查询为字符串,以便 for 循环对所有项重复,我对 corpus = tm_map(corpus,toString,"cgame","game)
所做的
tm_map
函数不会就地修改语料库,它 returns 是修改后的语料库。现在您没有做任何事情来保存结果。尝试
for(i in 1:length(replace)){
corpus <- tm_map(corpus,toString,paste("c",replace[i],sep=""),replace[i])
}
此外,toString
实际上是 base R 中函数的名称,因此编写自己的同名函数并不是一个好主意。
最后,get()
方法 returns 与您传递给它的字符值同名的 R 变量的值。没有理由在这里使用 get()
,因为您想继续使用字符串而不是变量名。
我正在尝试从 for 循环中的向量访问字符串。
我有这样一个语料库:
library(tm)
corpus = Corpus(VectorSource(c("cfilm,cgame,ccd","cd,film,cfilm")))
我的目标是摆脱所有不必要的 "c" 字符。请注意,这意味着我不想从 cd 中删除 c,但要删除 ccd、cgame 等等。
我使用这个函数,它接受一个语料库并删除一个术语和第二个术语。
toString = content_transformer(function(x,from,to)gsub(from, to, x))
因此,例如,要将 cgame 替换为 game,我使用
corpus = tm_map(corpus,toString,"cgame","game")
现在,我不想为所有术语重复这一行,而是想使用一个循环,使用具有相关术语的向量迭代所有可能的替换。
replace = c("game","film","cd")
我尝试了两种方法,但其中 none 行得通:
for(i in replace){tm_map(corpus,toString,paste("c",get(i),sep=""),get(i))}
和
for(i in 1:length(replace)){tm_map(corpus,toString,paste("c",replace[i],sep=""),replace[i])}
在第一种情况下,R 告诉我它找不到 get(i) 接收到的对象:Error in get(i) : object 'game' not found
。
第二种,没有报错信息,但语料库内没有任何变化。
如何将向量中的项目查询为字符串,以便 for 循环对所有项重复,我对 corpus = tm_map(corpus,toString,"cgame","game)
tm_map
函数不会就地修改语料库,它 returns 是修改后的语料库。现在您没有做任何事情来保存结果。尝试
for(i in 1:length(replace)){
corpus <- tm_map(corpus,toString,paste("c",replace[i],sep=""),replace[i])
}
此外,toString
实际上是 base R 中函数的名称,因此编写自己的同名函数并不是一个好主意。
最后,get()
方法 returns 与您传递给它的字符值同名的 R 变量的值。没有理由在这里使用 get()
,因为您想继续使用字符串而不是变量名。