Причина в stri_sub(..., -2)
. Необходимо указать от 1 до -2 символов, т. Е.
library(stringi)
with(df, ifelse(stri_sub(PlayerName, -1, -1) %in% c('Q', 'Z'),
stri_sub(PlayerName, 1, nchar(PlayerName)-2), PlayerName))
#[1] "Joh" "Robert" "Alber" "Jef"
DATA
structure(list(PlayerName = c("JohnQ", "Robert", "AlbertZ", "JeffQ"
), Score = c(75L, 80L, 67L, 88L)), row.names = c(NA, -4L), class = "data.frame")