Я могу ошибаться, но я думаю, что нет или это будет выбор (для переменных - столбцов), в отличие от подмножество (для отдельных лиц - строк). Например, используя первые 6 строк набора данных mtcars
, вы можете преобразовать набор данных в список и сделать выборку на основе индекса переменных:
# dataset format
li1 <- head(mtcars)
rownames(li1) <- NULL
str( li1[1:2] ) # ok
#> 'data.frame': 6 obs. of 2 variables:
#> $ mpg: num 21 21 22.8 21.4 18.7 18.1
#> $ cyl: num 6 6 4 6 8 6
# list format
li <- as.list(head(mtcars))
str( li[1:2] ) # ok
#> List of 2
#> $ mpg: num [1:6] 21 21 22.8 21.4 18.7 18.1
#> $ cyl: num [1:6] 6 6 4 6 8 6
Все становится ужасно, когда вы пытаетесь смешать подмножество и выбор :
# dataset format
str( li1[ li$mpg < 21 ] ) # ?
#> 'data.frame': 6 obs. of 3 variables:
#> $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76
#> $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
#> $ carb: num 4 4 1 1 2 1
# list format
str( li[ li$mpg < 21 ] )
#> List of 3
#> $ drat: num [1:6] 3.9 3.9 3.85 3.08 3.15 2.76
#> $ wt : num [1:6] 2.62 2.88 2.32 3.21 3.44 ...
#> $ carb: num [1:6] 4 4 1 1 2 1
Я пока не могу объяснить результат li[ li$mpg < 21 ]
, если кто-то увидит и захочет помочь здесь, я был бы рад.
РЕДАКТИРОВАТЬ Motus Я понял, что это не твой код, который нужно чистить. Я думаю, что лучше попытаться понять, что предназначалось для написания правильного / более надежного кода R, используя обычный оператор [
с запятой , если есть несколько измерений или формат dplyr::slice()
/ dplyr::filter
.