Подтвердить что ты не робот

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

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

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

> 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

Любая помощь, очень ценная.

4b9b3361

Ответ 1

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

as.numeric(df[1,])

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

Ответ 2

Я рекомендую 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

Ответ 3

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

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

Ответ 4

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

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

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