Я создал функцию в пакете R, которая принимает несколько аргументов.Одним из таких аргументов является имя столбца для R data.table.
Допустим, я хотел создать столбец со всеми значениями 42
.Для R data.table dt
я бы сделал:
dt[, column_name:=42]
Для R data.frame я бы сделал:
df$column_name = 42
Я хотел бы, чтобы функция принималась какаргумент что-то, что будет определять column_name
.Например, функция func
, вызываемая
func(dt, col='hey')
, передаст hey
в качестве нового имени столбца data.table.
Вот конкретный пример
renamer = function(colname, dt){
## do calculations on dt
dt[, colname:= 42]
}
Если я вызову функцию renamer(colname = 'foo', dt=dt)
, полученное имя столбца все равно будет colname
, а не значение, которое я передал, 'foo'.
В новом столбце должна быть строка 'foo'
Как я могу это сделать?Я также пытался с R data.frame, или пытался что-то с
setnames(dt, "oldname", "newname")
РЕДАКТИРОВАТЬ: я думаю, этот вопрос должен быть разъяснен:
Вот таблица data.table:
> library(data.table)
> DT = data.table(ID = c("b","b","b","a","a","c"), a = 1:6, b = 7:12, c = 13:18)
> DT
ID a b c
1: b 1 7 13
2: b 2 8 14
3: b 3 9 15
4: a 4 10 16
5: a 5 11 17
6: c 6 12 18
Я хотел бы создать такую функцию, чтобы новым именем столбца была строка, которую пользователь передает.
например
colnamer = function(newcolumname, datatable){
## do calculations on dt
## create a column with whatever string is passed via 'newcolumnname'
}
Если пользователь звонит colnamer('foobar', DT)
, я бы хотел, чтобы результат был
> DT
ID a b c foobar
1: b 1 7 13 ...
2: b 2 8 14 ...
3: b 3 9 15 ...
4: a 4 10 16 ...
5: a 5 11 17 ...
6: c 6 12 18 ...