Устраните лишние запятые (которые указывают параметры для фрейма данных, но вы не указываете никаких параметров), и ошибка исчезнет:
dtf <- data.frame(test1=runif(10))
dtf <- cbind(dtf,dtf)
dtf <- cbind(dtf,dtf)
dtf[3,3] <- 1
names(dtf) <- paste("test",seq(ncol(dtf)),sep="")
names.sel <- grep('(test[3-8]+$)',names(dtf))
dtf[,names.sel][ dtf[,names.sel] == 1 ] <- 2
stopifnot(dtf[3,3]==2)
И чтобы доказать, что это проблема, я могу воспроизвестиошибка с:
data[,names.sel,][ data[,names.sel] == 1 ,] <- 2
Error in `[<-.data.frame`(`*tmp*`, , grep("(test[3-8]+$)", names(data)), :
unused argument(s) ()