Ваше решение отлично работает на моей машине. Единственное отличие, которое я могу видеть, это cols <- -1
класса "numeric"
, где cols <- c(2:5)
равно [1] "integer"
. Если вы хотите узнать разницу между ними, посмотрите В чем разница между целочисленным классом и числовым классом в R .
Таким образом, один из способов обратного инжиниринга их решения заключается в создании cols
в numeric
классе, и seq
может помочь в этом.
cols <- seq(2,5,1)
#class(cols)
#[1] "numeric"
att5[, cols] <- sapply(att5[, cols], as.numeric)
# str(att5)
# 'data.frame': 5 obs. of 5 variables:
# $ att1: Factor w/ 5 levels "A","B","C","D",..: 1 2 3 4 5
# $ att2: num 1 2 3 4 5
# $ att3: num 1 2 3 4 5
# $ att4: num 1 2 3 4 5
# $ att5: num 1 2 3 4 5
Данные
dput(att5)
att5 <- structure(list(att1 = structure(1:5, .Label = c("A", "B", "C",
"D", "E"), class = "factor"), att2 = structure(1:5, .Label = c("1",
"2", "3", "4", "5"), class = "factor"), att3 = structure(1:5, .Label = c("1",
"2", "3", "4", "5"), class = "factor"), att4 = structure(1:5, .Label = c("1",
"2", "3", "4", "5"), class = "factor"), att5 = structure(1:5, .Label = c("1",
"2", "3", "4", "5"), class = "factor")), class = "data.frame", row.names = c(NA,
-5L))
Надеюсь, это сработает с вашей стороны.