I\'m trying to replace a certain string in a large data.frame. I just found the following solution but gsub
doesn\'t preserve the original data.frame layout. Ho
You will want to lapply
through your data.frame
testing for character
or factor
entries and then applying gsub
appropriately. The result will be a list
, but as.data.frame
fixes this.
test$val <- 1:4 # a non character/factor variable
(test2 <- as.data.frame(lapply(test,function(x) if(is.character(x)|is.factor(x)) gsub("a","new",x) else x)))
a b c val
1 new new i 1
2 b e j 2
3 c g k 3
4 d h new 4
class(test2$val) # to see if it is unchanged
[1] "integer"