Reemplazar un valor en un marco de datos basado en una instrucción condicional (`if`)

En el marco de datos R codificado para abajo, me gustaría reemplazar todas las veces queB aparece conb.

junk <- data.frame(x <- rep(LETTERS[1:4], 3), y <- letters[1:12])
colnames(junk) <- c("nm", "val")

esto proporciona:

   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

Mi intento inicial fue usar unafor yif declaraciones como esta:

for(i in junk$nm) if(i %in% "B") junk$nm <- "b"

pero como estoy seguro de que puede ver, esto reemplaza TODOS los valores dejunk$nm conb. Puedo ver por qué esto está haciendo esto, pero parece que no puedo reemplazar solo los casos de basura $ nm donde el valor original eraB.

NOTA: logré resolver el problema congsub pero en interés de aprender R todavía me gustaría saber cómo lograr que mi enfoque original funcione (si es posible)

Respuestas a la pregunta(7)

Su respuesta a la pregunta