我正在尝试替换大型data.frame中的某个字符串。我刚刚找到了以下解决方案,但gsub
未保留原始data.frame布局。我怎样才能做到这一点。
我的意思是我想替换字符串而不想更改df的布局。
考虑这个例子:
test<-data.frame(a=c("a","b","c","d"),b=c("a","e","g","h"),c=c("i","j","k","a"))
gsub("a","new",test)
THX
答案 0 :(得分:14)
您需要lapply
对data.frame
或character
条目进行factor
测试,然后适当地应用gsub
。结果将是list
,但as.data.frame
修复此问题。
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"
答案 1 :(得分:6)
as.data.frame(sapply(test, function(x) gsub("a", "new", x)))