Создайте имена для переменных / столбцов R data.frame - PullRequest
0 голосов
/ 02 мая 2018

У меня есть data.frame со столбцами, названными так

> names(df)
[1] "v1_1_a" "v1_1_b" "v1_2_a"

Это всего лишь пример схемы именования. Есть больше столбцов с этой схемой именования. Я хочу построить имена столбцов (по-прежнему существующих столбцов) и выполнять над ними операции следующим образом:

# pseudo code! python and R mixed
for minor in [1, 2, 3, 4, 5]:
    for letter in ['a', 'b', 'c', 'd']:
        col = 'v1_{}_{}'.format(minor, letter)
        df[col] <- df[col] * 10

Могу ли я создать имена переменных, как это?

Попробовал например: df[cat("v1_1_", "b", sep="")]

1 Ответ

0 голосов
/ 02 мая 2018

Примечание * это, безусловно, не лучший способ перебирать циклы данных, как указано в комментариях ниже.

Вы можете просто вставить переменные вместе и вызвать столбцы напрямую. Ваш псевдокод в R:

for(minor in c(1, 2, 3, 4, 5))
     for(letter in c('a', 'b', 'c', 'd'))
         df[,paste0('v1_',minor,'_',letter)] <- df[,paste0('v1_',minor,'_',letter)] *10

Это не работает с вашим фреймом данных, потому что у вас нет всех комбинаций. Если вы не уверены, существует ли комбинация, вы можете проверить ее перед выполнением расчетов.

for(minor in c(1, 2, 3, 4, 5))
     for(letter in c('a', 'b', 'c', 'd'))
         if(paste0('v1_',minor,'_',letter) %in% colnames(df))
             df[,paste0('v1_',minor,'_',letter)] <- df[,paste0('v1_',minor,'_',letter)] *10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...