I tried using the tm_map
. It gave the following error. How can I get around this?
require(tm)
byword<-tm_map(byword, tolower)
Error in UseMethod("tm_map", x) :
no applicable method for 'tm_map' applied to an object of class "character"
I tried using the tm_map
. It gave the following error. How can I get around this?
require(tm)
byword<-tm_map(byword, tolower)
Error in UseMethod("tm_map", x) :
no applicable method for 'tm_map' applied to an object of class "character"
Use the base R function tolower()
:
tolower(c("THE quick BROWN fox"))
# [1] "the quick brown fox"
tm_map
(in the package tm
) shows a list of usable transformation functions and tolower
is not one of them. The transformations appear to be S3 methods that operate on objects of class 'Corpus'. So you can't use just any function with tm_map
. –
Electrolyte Expanding my comment to a more detailed answer here: you have to wrap tolower
inside of content_transformer
not to screw up the VCorpus
object -- something like:
> library(tm)
> data('crude')
> crude[[1]]$content
[1] "Diamond Shamrock Corp said that\neffective today it had cut its contract prices for crude oil by\n1.50 dlrs a barrel.\n The reduction brings its posted price for West Texas\nIntermediate to 16.00 dlrs a barrel, the copany said.\n \"The price reduction today was made in the light of falling\noil product prices and a weak crude oil market,\" a company\nspokeswoman said.\n Diamond is the latest in a line of U.S. oil companies that\nhave cut its contract, or posted, prices over the last two days\nciting weak oil markets.\n Reuter"
> tm_map(crude, content_transformer(tolower))[[1]]$content
[1] "diamond shamrock corp said that\neffective today it had cut its contract prices for crude oil by\n1.50 dlrs a barrel.\n the reduction brings its posted price for west texas\nintermediate to 16.00 dlrs a barrel, the copany said.\n \"the price reduction today was made in the light of falling\noil product prices and a weak crude oil market,\" a company\nspokeswoman said.\n diamond is the latest in a line of u.s. oil companies that\nhave cut its contract, or posted, prices over the last two days\nciting weak oil markets.\n reuter"
myCorpus <- Corpus(VectorSource(byword))
myCorpus <- tm_map(myCorpus , tolower)
print(myCorpus[[1]])
tolower
inside of content_transformer
not to screw up the VCorpus
object, like: tm_map(myCorpus, content_transformer(tolower))
–
Chemash using tolower in this way has an undesirable side effect: if you try to create a term document matrix out of the corpus later, it will fail. This is because of a recent change in tm that cannot handle the return type of tolower. Instead, use:
myCorpus <- tm_map(myCorpus, PlainTextDocument)
© 2022 - 2024 — McMap. All rights reserved.
tm_map
from? This seems to be dependent on some non-base package. Please consider includinglibrary
statement for completeness. – Tatm_map()
is fromtm
package, andtolower()
is frombase
– Cramped