Булево решение для имен строк данных? - PullRequest
2 голосов
/ 04 апреля 2020

Названия фрейма данных исчезают после поднабора:

a <- LETTERS[1:10]
b <- rnorm(10)
dfa <- data.frame(b)
rownames(dfa) <- a
dfa
dfa2 <- dfa[1:8,]; dfa2

> dfa
            b
A -1.16592168
B -2.34631741
C -0.31412021
D -0.21755236
E -1.53238321
F -1.32780061
G  0.36072942
H -0.01840526
I -0.66500107
J -1.16027936
> dfa2 <- dfa[1:8,]; dfa2
[1] -1.16592168 -2.34631741 -0.31412021 -0.21755236 -1.53238321 -1.32780061  0.36072942 -0.01840526
Is there a Boolean solution? plyr /dplyr solutions exist. 

Как мы можем сделать это на первом шаге, не добавляя имена строк обратно в dfa2? Наблюдение - эта проблема не существует, если dfa имеет 2 или более переменных.

Я просмотрел несколько похожих постов, но они не касаются этого достаточно конкретно.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2020

Когда у нас только один столбец в кадре данных, результат приводится к минимально возможному измерению, то есть к вектору. (см. ?Extract). Чтобы избежать этого, используйте drop = FALSE во время поднабора.

df2 <- dfa[1:8, ,drop = FALSE]
df2
#           b
#A  0.04729636
#B  0.59639094
#C -0.29766849
#D -2.51843915
#E -0.75433974
#F  0.20539938
#G  1.05879253
#H  0.31234443
1 голос
/ 04 апреля 2020

Мы можем использовать преобразование в data.table без использования drop

library(dat.table)
setDT(dfa)[1:8]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...