Как отмечено в комментариях, ни data.frame()
, ни метод matrix
для as.data.frame
не имеют аргумента, позволяющего вам задавать имена столбцов.
Стандартным способом, как вы говорите, было бы задание имен объекта во второй строке кода. Если это отвратительно для вас, вы все равно можете сделать это в одной строке. Вот два варианта:
myFrame1 = as.data.frame("colnames<-"(mvrnorm(10, mu = c(0,0), Sigma = matrix(c(1, 0.56, 0.56, 1), ncol = 2), empirical = TRUE), c("x", "y")))
myFrame2 = setNames(as.data.frame(mvrnorm(10, mu = c(0,0), Sigma = matrix(c(1, 0.56, 0.56, 1), ncol = 2), empirical = TRUE)), c("x", "y"))
# I would prefer using two lines, much clearer:
myFrame3 = as.data.frame(mvrnorm(10, mu = c(0,0), Sigma = matrix(c(1, 0.56, 0.56, 1), ncol = 2), empirical = TRUE))
names(myFrame3) = c("x", "y")
# Or, if you're a fine of pipes:
library(magrittr)
myFrame4 = mvrnorm(
10,
mu = c(0,0),
Sigma = matrix(c(1, 0.56, 0.56, 1), ncol = 2),
empirical = TRUE
) %>%
as.data.frame %>%
setNames(c("x", "y"))
При взгляде на ?as.data.frame
описываются следующие методы:
## S3 method for class 'character'
as.data.frame(x, ...,
stringsAsFactors = default.stringsAsFactors())
## S3 method for class 'list'
as.data.frame(x, row.names = NULL, optional = FALSE, ...,
cut.names = FALSE, col.names = names(x), fix.empty.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
## S3 method for class 'matrix'
as.data.frame(x, row.names = NULL, optional = FALSE,
make.names = TRUE, ...,
stringsAsFactors = default.stringsAsFactors())
Обратите внимание, что метод matrix
не имеет аргумент col.names
. Только метод list
. Таким образом, при преобразовании list
в data.frame
вы можете использовать col.names
, но не конвертировать matrix
.