Supposed I am pulling the synonyms of “help” by the function of synonyms() from wordnet and get the followings:
Str = synonyms("help")
Str
[1] "c(\"aid\", \"assist\", \"assistance\", \"help\")"
[2] "c(\"aid\", \"assistance\", \"help\")"
[3] "c(\"assistant\", \"helper\", \"help\", \"supporter\")"
[4] "c(\"avail\", \"help\", \"service\")"
Then I can get a one character string using
unique(unlist(lapply(parse(text=Str),eval)))
at the end that looks like this:
[1] "aid" "assist" "assistance" "help" "assistant" "helper" "supporter"
[8] "avail" "service"
The above process was suggested by Gabor Grothendieck. His/Her solution is good, but I still couldn’t figure out that if I change the query term into “company”, “boy”, or someone else, an error message will be responsed.
One possible reason maybe due to the “sixth” synonym of “company” (please see below) is a single term and does not follow the format of “c(\”company\”)”.
synonyms("company")
[1] "c(\"caller\", \"company\")"
[2] "c(\"company\", \"companionship\", \"fellowship\", \"society\")"
[3] "c(\"company\", \"troupe\")"
[4] "c(\"party\", \"company\")"
[5] "c(\"ship's company\", \"company\")"
[6] "company"
Could someone kindly help me to solve this problem.
Many thanks.
You can solve this by creating a little helper function that uses R’s
trymechanism to catch errors. In this case, if theevalproduces an error, then return the original string, else return the result ofeval:Create a helper function:
Produces:
I reproduced your data and then used
dputto reproduce it here: