Я застрял с моим кодом.У меня есть набор данных (DS) с N строк.Моя цель состоит в том, чтобы отфильтровать из моего набора данных набор строк, где количество фильтруемых строк зависит от 2 параметров.
То, что я сделал, - это цикл для различных значений i (i = 1,.., I; первый параметр) и различные значения j (j = 1, .., J; второй параметр).Содержимое внутри цикла стремится отбросить выбранные строки и создать сокращенную версию набора данных (которую я называю ds2).
Итак, для каждой комбинации ij я хочу сохранить объекты уменьшенных наборов данных K = I * J ds2 как data.frame.Дело в том, что цикл работает с индексами «i» и «j», но затем я хочу сохранить объект, используя индекс «k».
Я прикрепляю свой код, где я задаю i = 2: 3и j = 9:10 (итак, K = 4).Я использую temp + assign для создания моих объектов набора данных.
Этот код успешно создает 4 объекта data.frame, но не может их правильно создать, поскольку все они равны (все они ссылаются на один из4 комбинации)
ds2 = paste("ds2_",c(seq(1,4,1)),sep="") # i then assign each dataset to one of the elements in ds2
for (k in 1:length(ds2)){ # datasets to generate
for (i in seq(2,3, by = 1)){ # parameter i values
for (j in seq(9,10, by = 1)) { # parameter j values
ds$active = 1 # once the first loop ends, I reset the variable active to 1
v_1mm = rollapply(ds$v_1, i , max)
v_2mm = rollapply(ds$v_2, i , max)
v_3mm = rollapply(ds$v_3, i , max)
v_4mm = rollapply(ds$v_4, i , max)
v_5mm = rollapply(ds$v_5, i , max)
v_6mm = rollapply(ds$v_6, i , max)
v_7mm = rollapply(ds$v_7, i , max)
v_8mm = rollapply(ds$v_8, i , max)
v_9mm = rollapply(ds$v_9, i , max)
v_10mm = rollapply(ds$v_10, i , max)
ds$v_1mm = c(rep(0, i-1), v_1mm)
ds$v_2mm = c(rep(0, i-1), v_2mm)
ds$v_3mm = c(rep(0, i-1), v_3mm)
ds$v_4mm = c(rep(0, i-1), v_4mm)
ds$v_5mm = c(rep(0, i-1), v_5mm)
ds$v_6mm = c(rep(0, i-1), v_6mm)
ds$v_7mm = c(rep(0, i-1), v_7mm)
ds$v_8mm = c(rep(0, i-1), v_8mm)
ds$v_9mm = c(rep(0, i-1), v_9mm)
ds$v_10mm = c(rep(0, i-1), v_10mm)
ds$active[(ds$v_1mm <= j | is.na(ds$v_1)) &
(ds$v_2mm <=j | is.na(ds$v_2)) &
(ds$v_3mm <=j | is.na(ds$v_3)) &
(ds$v_4mm <=j | is.na(ds$v_4)) &
(ds$v_5mm <=j | is.na(ds$v_5)) &
(ds$v_6mm <=j | is.na(ds$v_6)) &
(ds$v_7mm <=j | is.na(ds$v_7)) &
(ds$v_8mm <=j | is.na(ds$v_8)) &
(ds$v_9mm <=j | is.na(ds$v_9)) &
(ds$v_10mm <=j | is.na(ds$v_10))] = 0
temp = ds[ds$active==1,] # temporary object
assign(ds2[k], temp) # assign the object to ds2
}
}
Существует ли правильный способ создания объекта data.frame для каждого цикла цикла?Имеет смысл или нет устанавливать третий цикл в k?
Заранее спасибо
Родольфо