Chcę utworzyć wektor z wiersza ramki danych. Ale nie chcę mieć nazw wierszy i kolumn. Próbowałem kilku rzeczy ... ale nie miałem szczęścia.
To jest moja ramka danych:
> 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
Próbowałem:
> newV <- as.vector(df[1,])
> newV
a b c
1 1 2 2.6
Ale naprawdę chcę czegoś takiego:
> newV <- c( 1,2,2.6)
> newV
[1] 1.0 2.0 2.6
c(t(as.matrix(df)))
?Odpowiedzi:
Kiedy wyodrębniasz pojedynczy wiersz z ramki danych, otrzymasz jednorzędową ramkę danych. Zamień go na wektor numeryczny:
Jak sugeruje @Roland,
unlist(df[1,])
konwertuje jednorzędową ramkę danych na wektor numeryczny bez pomijania nazw. Dlategounname(unlist(df[1,]))
jest inny, nieco bardziej wyraźny sposób na osiągnięcie tego samego wyniku.Jak komentuje @Josh poniżej, jeśli masz ramkę danych nie do końca numeryczną (alfabetyczną, dzieloną, mieszaną ...), potrzebujesz
as.character(df[1,])
zamiast tego.źródło
identical(unlist(df[1,], use.names = FALSE), as.numeric(df[1,]))
(a przy okazji df nadal nie jest rozsądną nazwą dla data.frame ... ;-))Polecam
unlist
, który zachowuje nazwy.Jeśli nie chcesz nazwanego wektora:
źródło
Jeśli nie chcesz zmieniać na numeryczne, możesz spróbować tego.
źródło
str(as.vector(t(df)[,1]))
jestnum [1:3] 1 2 2.6
, czyli kod jest przekształcanie wyników z wektorem numerycznej ...t(df)
R przekształca ramkę danych w macierz, w tym przypadku macierz numeryczną, ponieważ wszystkie elementy są numeryczne. Następnie[,1]
wyodrębnia pierwszą kolumnę (wektor numeryczny, ponieważ nadmiarowy wymiar jest automatycznie usuwany).as.vector()
po prostu upuszcza nazwy (które możesz również zrobićunname()
).unname(unlist(x))
rozwiązanie jest trochę lepsze (wydajniejsze i bardziej przejrzyste).as.vector(t(df)[,1])
Kocham to ! Dokładnie to, czego potrzebuję!Oto
dplyr
opcja oparta na:źródło
Pamiętaj, że musisz uważać, jeśli wiersz zawiera czynnik. Oto przykład:
Oto kolejny przykład (domyślnie data.frame () konwertuje znaki na współczynniki)
Aby temu zapobiec, musisz zadbać o czynnik, zanim go wyodrębnisz:
źródło
Kolumny ramek danych są już wektorami, wystarczy je wyciągnąć. Zwróć uwagę, że umieszczasz żądaną kolumnę po przecinku, a nie przed nim:
Jeśli naprawdę chcesz wiersz, zrób to, co powiedział Ben i używaj poprawnie słów w przyszłości.
źródło