在下面编码的 R 数据框中,我想替换所有的时间B
出现与b
.
junk <- data.frame(x <- rep(LETTERS[1:4], 3), y <- letters[1:12])
colnames(junk) <- c("nm", "val")
这提供了:
nm val
1 A a
2 B b
3 C c
4 D d
5 A e
6 B f
7 C g
8 D h
9 A i
10 B j
11 C k
12 D l
我最初的尝试是使用for
and if
像这样的声明:
for(i in junk$nm) if(i %in% "B") junk$nm <- "b"
但我相信你可以看到,这取代了所有的值junk$nm
with b
。我可以明白为什么这样做,但我似乎无法让它只替换那些原始值是 junk$nm 的情况B
.
注意:我设法解决了这个问题gsub
但为了学习 R 我仍然想知道如何让我原来的方法发挥作用(如果可能的话)
将 nm 转换为字符然后进行更改更容易:
junk$nm <- as.character(junk$nm)
junk$nm[junk$nm == "B"] <- "b"
编辑:如果您确实需要维护 nm 作为因子,请在最后添加以下内容:
junk$nm <- as.factor(junk$nm)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)