Wyodrębnij kolumnę z danych.tabela jako wektor, według pozycji
Jak wyodrębnić kolumnę z danych.tabela jako wektor według jego położenia? Poniżej kilka fragmentów kodu, które wypróbowałem:
DT<-data.table(x=c(1,2),y=c(3,4),z=c(5,6))
DT
# x y z
#1: 1 3 5
#2: 2 4 6
Chcę uzyskać to wyjście używając pozycji kolumny
DT$y
#[1] 3 4
is.vector(DT$y)
#[1] TRUE
Inny sposób uzyskania tego wyniku za pomocą pozycji kolumny
DT[,y]
#[1] 3 4
is.vector(DT[,y])
#[1] TRUE
To nie daje wektora
DT[,2,with=FALSE]
# y
#1: 3
#2: 4
is.vector(DT[,2,with=FALSE])
#[1] FALSE
Te dwa nie działają:
DT$noquote(names(DT)[2]) # Doesn't work
#Error: attempt to apply non-function
DT[,noquote(names(DT)[2])] # Doesn't work
#[1] y
A to nie daje wektora:
DT[,noquote(names(DT)[2]),with=FALSE] # Not a vector
# y
#1: 3
#2: 4
is.vector(DT[,noquote(names(DT)[2]),with=FALSE])
#[1] FALSE
59
Author: demongolem, 2013-11-18
2 answers
DANE.tabela dziedziczy z klasy data.frame
. Dlatego jest list
(wektorów kolumnowych) wewnętrznie i może być traktowany jako taki.
is.list(DT)
#[1] TRUE
Na szczęście podzbiór listy, tj. [[
, jest bardzo szybki i w przeciwieństwie do [
, danych pakietu.tabela nie definiuje dla niej metody. Tak więc, możesz po prostu użyć [[
, Aby wyodrębnić indeks:
DT[[2]]
#[1] 3 4
78
Author: Roland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-01 06:46:51
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-01 06:46:51
DT[,get(names(DT)[colNb])]
Gdzie colNb może być liczbą całkowitą (żądany numer kolumny) lub zmienną zawierającą numer kolumny.
3
Author: lokxs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-17 14:02:56
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-17 14:02:56