Beware of grep with a list
[This article was first published on The stupidest thing... » R, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Another R tip: beware of as.character
applied to a list.
> as.character( list(letters[1:3], letters[4:6]) ) [1] "c(\"a\", \"b\", \"c\")" "c(\"d\", \"e\", \"f\")"
Really, beware of grep
with a list:
> grep("c", list(letters[1:3], letters[4:6])) [1] 1 2
You might have thought that the result would be just 1
, but grep
expects a vector of character strings. If the input is not that, it uses as.character()
. Since the result of that starts with "c("
, grep
finds "c"
in each.
See the related discussion (from Sept 2011) on stackoverflow.
To leave a comment for the author, please follow the link and comment on their blog: The stupidest thing... » R.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.