Я пытаюсь добавить новый столбец во фрейм данных с указанным именем столбца.
Это работает:
dat = data.frame(x1 = 1:10,
x2 = 101:110,
x3 = 1:2,
x4 = 2:1)
cbind(dat, 'x10' = 1:10)
Результат:
x1 x2 x3 x4 x10
1 1 101 1 2 1
2 2 102 2 1 2
3 3 103 1 2 3
4 4 104 2 1 4
5 5 105 1 2 5
6 6 106 2 1 6
7 7 107 1 2 7
8 8 108 2 1 8
9 9 109 1 2 9
10 10 110 2 1 10
но использование функционального выражения в качестве имени столбца не работает
cbind(dat, paste0('x10', '_flag') = 1:10)
Ошибка: неожиданный '=' в "cbind (dat, paste0 ('x10', '_flag') ="
Я думал о
column_name = paste0('x10', '_flag')
cbind(dat, column_name = 1:10)
но в качестве имени столбца будет использоваться "column_name", а не строка, на которую он ссылается (спасибо @ 42- за исправление)
Как сообщить R, что paste0()
- это просто строка? Я попробовал as.character(paste0())
, но ничего не вышло. Любая помощь приветствуется. Спасибо!
column_name
, поэтому в итогеdat$column_name
будет 1:10, а не то, на что вы надеялись. Выражения для имен аргументов не интерпретируются в паирлистах, данных функциям. Вы можете получить интерпретацию выражений, которые оцениваются в символьные значения с помощьюassign
(в первой позиции аргумента), но в конечном итоге это очень громоздкий вид кода и, как правило, означает, что есть лучшие альтернативы. - person IRTFM   schedule 25.08.2016