подмножество data.frame без имен столбцов

> dput(test)
structure(list(MEMORY1 = c(7.5, 6, 6, 3.5, 5, 5), MEMORY2 = c(5, 
7.5, 3, 3.5, 5, 5), MEMORY3 = c(5, 3.5, 3, 3.5, 5, 2), MEMORY4 = c(2, 
1.5, 3, 3.5, 1, 2), MEMORY5 = c(7.5, 3.5, 3, 3.5, 5, 7), MEMORY6 = c(2, 
5, 7.5, 7.5, 5, 5), MEMORY7 = c(2, 1.5, 3, 3.5, 5, 2), MEMORY8 = c(5, 
7.5, 7.5, 7.5, 5, 8)), .Names = c("MEMORY1", "MEMORY2", "MEMORY3", 
"MEMORY4", "MEMORY5", "MEMORY6", "MEMORY7", "MEMORY8"), row.names = c(NA, 
6L), class = "data.frame")
> test
  MEMORY1 MEMORY2 MEMORY3 MEMORY4 MEMORY5 MEMORY6 MEMORY7 MEMORY8
1     7.5     5.0     5.0     2.0     7.5     2.0     2.0     5.0
2     6.0     7.5     3.5     1.5     3.5     5.0     1.5     7.5
3     6.0     3.0     3.0     3.0     3.0     7.5     3.0     7.5
4     3.5     3.5     3.5     3.5     3.5     7.5     3.5     7.5
5     5.0     5.0     5.0     1.0     5.0     5.0     5.0     5.0
6     5.0     5.0     2.0     2.0     7.0     5.0     2.0     8.0

У меня есть data.frame, и я хотел бы подмножать только первую строку. Если я делаю test[1, ], результат

> test[1, ]
  MEMORY1 MEMORY2 MEMORY3 MEMORY4 MEMORY5 MEMORY6 MEMORY7 MEMORY8
1     7.5       5       5       2     7.5       2       2       5

Как подмножить data.frame, чтобы получить только вектор чисел без имен столбцов?

Ответ 1

То, что вы хотите, это числовой вектор вместо data.frame. Для этого вы можете просто использовать as.numeric для преобразования

> as.numeric(df[1,])
[1] 7.5 5.0 5.0 2.0 7.5 2.0 2.0 5.0

Ответ 2

Вы можете использовать unlist с опцией use.names=FALSE, чтобы возвращать только vector без имен.

unlist(test[1,], use.names=FALSE)
#[1] 7.5 5.0 5.0 2.0 7.5 2.0 2.0 5.0

test[1,] по-прежнему равен data.frame с 8 столбцами. A data.frame можно считать a list, имеющим тот же length для своих list элементов (или столбцов). Поэтому мы можем использовать unlist. Это также работает, когда вы создаете vector из более чем одной строки.

unlist(test[1:2,], use.names=FALSE)

Или, как предположил @Frank, если мы подмножаем несколько строк, сохраняя размеры, мы устанавливаем имена NULL и конвертируем в matrix.

 as.matrix(setNames(test[1:2,],NULL))