as.vector
на data.frame
возвращает сам data.frame
, поскольку method
для as.vector
с data.frame
methods('as.vector')
#[1] as.vector,abIndex-method as.vector,ANY-method as.vector,dgCMatrix-method as.vector,dgeMatrix-method
#[5] as.vector,diagonalMatrix-method as.vector,dsCMatrix-method as.vector,ldenseMatrix-method as.vector,Matrix-method
#[9] as.vector,ndenseMatrix-method as.vector,sparseVector-method as.vector.factor as.vector.Matrix*
#[13] as.vector.sparseVector*
мы также можем проверить обратное, т. Е. На data.frame
grep('^as\\.', methods(class = 'data.frame'), value = TRUE)
#[1] "as.data.frame.data.frame" "as.data.table.data.frame"
#[3] "as.list.data.frame" "as.matrix.data.frame" "as.tbl.data.frame"
и length
совпадает с количеством столбцов data.frame, то есть здесь оно равно 1. Вместо этого нам нужно nrow(x)
as.vector(mtcars) # nothing changed
length(as.vector(mtcars))
#[1] 11
Но, предположим, что если мы сделаем
nrow(mtcars)
#[1] 32
length
, то можно также применить к vector
, извлекая столбец с помощью $
или [[
length(mtcars[[1]])