Пример списка фреймов данных в R - PullRequest
0 голосов
/ 18 марта 2020

У меня есть список, состоящий из 16 кадров данных (dientes). Я хотел бы выбрать 80% строк без замены в каждом кадре данных. Я попытался с этими lapply() функциями безуспешно:

index <- lapply(1:nrow(dientes), sample, round(0.8*nrow), replace = F)
index <- lapply(dientes, sample, round(0.8*nrow), replace = F)

Где я ошибаюсь?

Ответы [ 2 ]

2 голосов
/ 18 марта 2020

Если index должен содержать список выбранных data.frames, вы можете сделать это:

## mock list of data.frames
dientes <- list(A=mtcars, B=iris, C=volcano)

## count input rows
lapply(dientes, nrow)
#> $A
#> [1] 32
#> 
#> $B
#> [1] 150
#> 
#> $C
#> [1] 87

index <- lapply(dientes, function(x) x[sample(nrow(x), round(0.8*nrow(x))), ])

## count output rows
lapply(index, nrow)
#> $A
#> [1] 26
#> 
#> $B
#> [1] 120
#> 
#> $C
#> [1] 70

Создано в 2020-03-18 пакетом Представить (v0.3.0)

1 голос
/ 18 марта 2020

Я бы сделал следующее:

index <- lapply(dientes, function(x){x[sample(x, round(0.8*nrow(x)), replace = F),]})

lapply принимает список dientes в качестве ввода

function(x){..} применяет операцию, которую вы хотите, к каждому элементу

x - это каждый элемент, и вы берете из него строки с помощью x[sample(...),]

...