Добавить список символов в начало имен столбцов в определенных диапазонах столбцов - PullRequest
0 голосов
/ 29 июня 2018

Я ищу способ добавить список из 64 строк символов (например, "m_news_ed_") к start диапазона имен столбцов.

addToCol <- c("m_med_ed_","f_edu_vc_","m_gov_barr_","f_mil_gen_" ..."f_heal_stnur_")

Итак, первый элемент в списке необходимо добавить к началу имен столбцов в столбцах с 3 по 11. Затем второй элемент необходимо добавить к началу имен столбцов с 13 по 21. И так еще 62 раза.

Если это помогает, интервал между столбцами составляет 10 столбцов каждый раз. 3:11, затем 13:21, затем 23:31.

colRanges <- c(3:11, 13:21, 23:31 ... 633:641)

Я думал о цикле for, но не совсем уверен, как мне будет циклически проходить как список диапазонов столбцов, так и список символов для добавления.

У меня есть код, позволяющий выполнять каждый отдельный набор столбцов, но для этого потребуется 64 строки кода

colnames(data)[3:11] <- paste("m_news_ed_",colnames(data[3:11]), sep = "_")

Любые предложения приветствуются!

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Мы можем использовать Map из base R, чтобы создать последовательность из двух наборов целых чисел, а затем paste с помощью addToCol

i1 <- unlist(Map(":", seq(3, 633, by = 10), seq(11, 641, by = 10)))
names(data)[i1] <- paste0(rep(addToCol, each = 10), names(data)[i1])
0 голосов
/ 29 июня 2018

Подумайте об изменении вектора add . Затем вы можете коснуться вектора colnames одним махом.

    addToCol <- c("m_med_ed_","f_edu_vc_","m_gov_barr_","f_mil_gen_","f_heal_stnur_")
    addToCol2 <- ""   # start with a blank
    for (i in 1:length(addToCol)) {
        # add a blank, then the prefix nine times
        addToCol2 <- c(addToCol2, "", rep(addToCol[i], times = 9))
    }
    colnames(data) <- paste0(addToCol2, colnames(data))

Вот что вы получаете. Я думаю, что это правильно.

   > addToCol2

[1] "" "" "m_med_ed_" "m_med_ed_" "m_med_ed _"
[6] "m_med_ed_" "m_med_ed_" "m_med_ed_" "m_med_ed_" "m_med_ed_"
[11] "m_med_ed_" "" f_edu_vc_ "" f_edu_vc_ "" f_edu_vc _ "
[16] "f_edu_vc_" "f_edu_vc_" "f_edu_vc_" "f_edu_vc_" "f_edu_vc _"
[21] "f_edu_vc_" "" "m_gov_barr_" "m_gov_barr_" "m_gov_barr _"
[26] "m_gov_barr_" "m_gov_barr_" "m_gov_barr_" "m_gov_barr_" "m_gov_barr _"
[31] "m_gov_barr_" "" "f_mil_gen_" "f_mil_gen_" "f_mil_gen _"
[36] "f_mil_gen_" "f_mil_gen_" "f_mil_gen_" "f_mil_gen_" "f_mil_gen _"
[41] "f_mil_gen_" "" "f_heal_stnur_" "f_heal_stnur_" "f_heal_stnur_" [46] "f_heal_stnur_" "f_heal_stnur_" "f_heal_stnur_" "f_heal_stnur_" "f_heal_stnur_" [51] "f_heal_stnur _"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...