Использование переменных цикла - PullRequest
3 голосов
/ 11 июля 2011

Я бы хотел переименовать большое количество столбцов (заголовков столбцов), чтобы они имели числовые имена, а не комбинированные буквы + цифры. Из-за способа хранения данных в необработанном формате я не могу просто получить доступ к правильным номерам столбцов, используя data[[152]], если хочу взаимодействовать с конкретным столбцом данных (поскольку случайные вопросы полностью отфильтровываются из данных из-за того, что длинные ответы на комментарии), но я бы хотел получить к ним доступ по data$152. Кроме того, примерно половина имен столбцов в моих данных была загружена с class(data$152) = NULL, но class(data[[152]]) = целое число (и если я переименую файл data[[152]], это соответственно позволяет мне видеть class(data$152) как целое число).

Таким образом, есть ли способ использовать номер итерации цикла в качестве имени столбца (как показано ниже)

    for (n in 1:415) {
        names(data)[n] <-"n"    # name nth column after number 'n'
    }

Это переназначит все мои заголовки столбцов и гарантирует, что я не столкнусь с классами вопросов, что приведет к нулю?

В качестве дополнительной справочной информации мои данные импортируются из файла CSV с разделителями-запятыми со значением 99, присваиваемым ответам NA, причем первая строка представляет собой имена / заголовки столбцов

    data <- read.table("rawdata.csv", header=TRUE, sep=",", na.strings = "99")

415 столбцов с заголовками в формате Q001, Q002 и т. Д. Примерно 200 строк без меток строк / без столбца меток

1 Ответ

3 голосов
/ 11 июля 2011

Вы можете сделать это без цикла, как показано ниже:

names(data) <- 1:415

Позвольте мне проиллюстрировать пример:

dat <- data.frame(a=1:4, b=2:5, c=3:6, d=4:7)
dat
  a b c d
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
4 4 5 6 7

Теперь переименуйте столбцы:

names(dat) <- 1:4
dat
  1 2 3 4
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
4 4 5 6 7

РЕДАКТИРОВАТЬ: Как получить доступ к вашим новым данным

@ Рамнатх очень точно указывает, что вы не сможете получить доступ к своим данным, используя dat$1:

dat$1
Error: unexpected numeric constant in "dat$1"

Вместо этого вам нужно будет обернуть имена столбцов в кавычки:

dat$`1`
[1] 1 2 3 4

Кроме того, вы можете использовать комбинацию символьных и числовых данных для переименования столбцов. Это может быть гораздо более удобный способ решения вашей проблемы:

names(dat) <- paste("x", 1:4, sep="")
dat
  x1 x2 x3 x4
1  1  2  3  4
2  2  3  4  5
3  3  4  5  6
4  4  5  6  7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...