Цикл for используется для выбора каждого столбца таблицы данных путем изменения имени столбца на «selcol» с помощью setnames()
. В полном коде каждый столбец используется несколько раз для различного числа людей, которые применяют критерии столбца. Затем имя столбца меняется на его первоначальное имя. Здесь, как представляется, возникает ошибка, поскольку setnames()
меняет имя столбца в большем количестве мест, чем указанная таблица данных. Кроме того, функция setnames()
не меняет имя столбца обратно. Если вместо использования цикла я устанавливаю индекс y = 1, y = 2, ... тогда эта ошибка не возникает; это происходит только при запуске цикла. Я попытался определить временную таблицу, и я попытался определить вектор имен столбцов, но когда я использую setnames()
в этих объектах, имя изменяется в постоянной таблице и в векторе имен, которые должны оставаться постоянными. Я попробовал таблицу данных и фрейм данных. Я хотел бы знать, если это ошибка в пакете, и есть ли другой практический способ выбрать каждый столбец?
norows = 5
nocols = 7
mtrx_perm <- as.data.table(matrix(round(rnorm(norows*nocols), digits = 3), ncol = nocols, byrow = T))
colnames(mtrx_perm) <- as.character(seq(0:6)-1)
resetnames <- colnames(mtrx_perm)
vect_temp = rep(0, norows)
for (y in 1: nocols){
mtrx_temp <- mtrx_perm
setnames(mtrx_temp, as.character(y-1), "selcol")
vect_add <- mtrx_temp$selcol
#setnames(mtrx_temp, "selcol", as.character(y-1))
colnames(mtrx_temp) <- resetnames
vect_temp <- vect_temp + vect_add
}
mtrx_perm
mtrx_temp
vect_temp
apply(mtrx_perm, 1, sum)