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