根据数字而不是模式有条件地使用 gsub

Using gsub conditionally based on numbers and not patterns

是否可以根据基于数字而不是模式的条件使用 gsub

举个例子:

A      B
3      2
5      1
6      7
2      8
4      2

假设我想将 A 列中大于 4 的数字转换为字符 high;而那些小于或等于 4 的字符 low:

A      B
low    2
high   1
high   7
low    8
low    2

我想使用类似的东西:

df$A<-c(sapply(df$A, function(x) gsub(????, ??, x)))

你只需要一个 ifelse 这里:

A <- c(3,5,6,2,4)
B <- c(2,1,7,8,2)

df <- data.frame(A,B)
df$A <- ifelse(df$A>4, "high", "low")
df

输出:

     A B
1  low 2
2 high 1
3 high 7
4  low 8
5  low 2

R demo online