Это делается функцией [<-.data.frame
.Можно предположить, что он может быть заменен на тот, который рассматривает название аргумента, но это такая фундаментальная функция, что я буду колебаться.Более того, похоже, что отвращение к этой практике сигнализирует этот код в верхней части определения функции:
> `[<-.data.frame`
function (x, i, j, value)
{
if (!all(names(sys.call()) %in% c("", "value")))
warning("named arguments are discouraged")
nA <- nargs()
if (nA == 4L) {
<snipped rest of rather long definition>
Я не знаю, почему это так, но это так.Возможно, вам следует подумать об использовании names<-
после назначения столбцов или об использовании этого метода:
> dfrm["barWidth"] <- barWidth
> dfrm
a V2 barWidth
1 a 1 1
2 b 2 2
3 c 3 3
4 d 4 4
Это можно обобщить в виде списка новых столбцов:
dfrm <- data.frame(a=letters[1:4])
barWidth <- 1:4
newcols <- list(barWidth=barWidth, bw2 =barWidth)
dfrm[names(newcol)] <- newcol
dfrm
#
a barWidth bw2
1 a 1 1
2 b 2 2
3 c 3 3
4 d 4 4