Преобразование строки фрейма данных в вектор


Я хочу создать вектор из строки фрейма данных. Но я не хочу иметь имена строк и столбцов. Я попробовал несколько вещей... но не повезло.

Это мой фрейм данных:

> df <- data.frame(a=c(1,2,4,2),b=c(2,6,2,1),c=c(2.6,8.2,7.5,3))
> df
  a b   c
1 1 2 2.6
2 2 6 8.2
3 4 2 7.5
4 2 1 3.0

пробовал:

> newV <- as.vector(df[1,])
> newV
  a b   c
1 1 2 2.6

но я действительно хочу, чтобы что-то выглядело так:

> newV <- c( 1,2,2.6)
> newV
[1] 1.0 2.0 2.6

любая помощь, очень признателен.

4 78

4 ответа:

когда вы извлекаете одну строку из фрейма данных, вы получаете однорядный фрейм данных. Преобразовать его в числовой вектор:

as.numeric(df[1,])

как предлагает @Roland,unlist(df[1,]) преобразует однорядный фрейм данных в числовой вектор без удаления имен. Поэтому unname(unlist(df[1,])) еще одна, чуть более явный способ получить тот же результат.

рекомендую unlist, который хранит имена.

unlist(df[1,])
  a   b   c 
1.0 2.0 2.6 

is.vector(unlist(df[1,]))
[1] TRUE

Если вы не хотите именованный вектор:

unname(unlist(df[1,]))
[1] 1.0 2.0 2.6

Если вы не хотите, чтобы изменить на числовой вы можете попробовать это.

> as.vector(t(df)[,1])
[1] 1.0 2.0 2.6

столбцы фреймов данных уже являются векторами, вам просто нужно вытащить их. Обратите внимание, что вы размещаете столбец, который вы хотите после запятой, а не перед ним:

> newV <- df[,1]
> newV
[1] 1 2 4 2

Если вы действительно хотите строку, то делайте то, что сказал Бен, и, пожалуйста, правильно используйте слова в будущем.