Преобразование строки кадра данных в вектор
Я хочу создать вектор из строки кадра данных. Но я не хочу иметь имена строк и столбцов. Я пробовал несколько вещей... но не повезло.
Это мой кадр данных:
> 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
Любая помощь, очень ценная.
Ответы
Ответ 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
Если вам действительно нужна строка, сделайте то, что сказал Бен, и, пожалуйста, правильно используйте слова в будущем.