Создание фреймов данных с использованием цикла for в r - PullRequest
0 голосов
/ 10 января 2019

Я хотел бы написать цикл, который создает пять новых наборов данных в R, каждый из которых содержит различное количество наблюдений из исходного фрейма данных, df.

Вот мой текущий код, он выводит значение dfi в виде строки, а не фактического объекта («df [4:42 + i]» вместо df [4:42 + i]).

for(i in 1:5)
{  nam <- paste("df",i, sep="")
assign(nam, eval(paste("df","[1:44 + ",i,",]", sep="")))
}

Я бы хотел вернуть объект df, когда он зацикливается, но я не знаю, как это сделать. Какие-либо предложения? Заранее большое спасибо.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

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

floor(runif(5, 10, 30))

Это генерирует 5 целых чисел от 10 до 30. Измените их, как вам нравится.

function(x) mtcars %>% sample_n(x)

Это берет фрейм данных (mtcars) и отбирает некоторое количество строк из фрейма данных.

lDF <- lapply(floor(runif(5, 10, 30)), function(x) mtcars %>% sample_n(x))

Это объединяет его, используя lapply with, создает список фреймов данных, которые вы можете ссылаться как lDF [1], как вам нравится

0 голосов
/ 10 января 2019

Для примера набора данных:

df <- mtcars

А вот и список кадров:

list_of_frames <- lapply(1:5, function(i) df[1:3 + i,])
list_of_frames[[3]]
#                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
# Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
# Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
# Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

(Если вам действительно нравятся имена, вы также можете сделать

names(list_of_frames) <- paste0("df", 1:5)
list_of_frames[["df3"]]

Если вам действительно нужно хранить каждую переменную отдельно, то вот цикл:

ls() # proof that they don't exist yet
# [1] "df"
for (i in 1:5) assign(paste0("df", i), df[1:3 + i,])
ls()
# [1] "df"  "df1" "df2" "df3" "df4" "df5" "i"  
df3
#                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
# Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
# Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
# Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...