Мы на одной странице, я тоже учусь этому. У меня может не быть хорошего ответа. Но это то, что я хотел бы сделать, чтобы понять, что происходит.
Сначала я бы попытался понять, что означает i
в вашем цикле.
k = 1
for(i in df ){
print(paste("loop", k))
print(i)
k = k + 1
}
Вы получите:
[1] "loop 1"
[1] 1 6 11 16 21
[1] "loop 2"
[1] 2 7 12 17 22
[1] "loop 3"
[1] 3 8 13 18 23
[1] "loop 4"
[1] 4 9 14 19 24
[1] "loop 5"
[1] 5 10 15 20 25
Затем замените i
в своем коде на loop 1
значения в виде вектора: c(1, 6, 11, 16, 21)
colnames(df)[c(1, 6, 11, 16, 21)] = paste(c("x"),c(1, 6, 11, 16, 21), sep = "")
тогда вы получите:
> colnames(df)[c(1, 6, 11, 16, 21)]=paste(c("x"),c(1, 6, 11, 16, 21),sep="")
Error in names(x) <- value :
'names' attribute [21] must be the same length as the vector [5]
Теперь мы знаем, откуда 21
. Однако у вас нет 21 столбца, а у вас есть только 5 имен.