У меня довольно сложный набор функций, которые мне нужно применить к четырем различным фиктивным переменным с одинаковым именем ядра, но с разным числом в конце.Я надеюсь применить эти функции за один раз, а не повторять это четыре раза.
В качестве примера, вот составленный набор данных только для иллюстративных целей:
n <- c(1:100)
var1 <-NA
var1[n < 20] <- 1
var1[n >50] <- 0
var2 <-NA
var2[n < 30] <- 1
var2[n >50] <- 0
var3 <-NA
var3[n < 10] <- 1
var3[n >40] <- 0
var4 <-NA
var4[n < 20] <- 1
var4[n > 450] <- 0
df <- data.frame(var1, var2, var3, var4, n)
С точки зрения функций, которые мне нужно зациклить, это в основном три в отношении этих переменных.Мне нужно иметь возможность сначала установить подмножество данных, создать новую переменную для каждого из исходных и записать новые результаты в кадр данных.Пожалуйста, не спрашивайте меня, зачем мне это делать, они являются частью гораздо большего кода.
Это шаги, которые мне нужно выполнить, но на всех 4:
df_sub <- subset(df, !is.na(df$var1))
sample1 <- nrow(df_sub[df_sub$var1 == 1,])
if(sample1 < 35) {
a1 <- NA
} else {
a1 <- mean(df_sub$n[df_sub$var1==1])
new_df <- data.frame(a1,a2,a3,a4)
Я думал о зацикливании суффикса, но не могу понять, как R справляется с этим.Я нашел решение для создания переменной в цикле через assign()
(https://stats.stackexchange.com/questions/10838/produce-a-list-of-variable-name-in-a-for-loop-then-assign-values-to-them) Но я все еще не могу понять, как поступить с подмножеством. И в целом, как бы я делал цикл по числу в переменнойимя, а не номер столбца, список и т. д.
В качестве альтернативы, если есть способ создать функцию, в которой я могу создать переменные для экспорта в среду вне этой функции, а затем применить эту функцию к var1 - var4в DF и по-прежнему получить 4 различных версий (a1 - a4) в new_df.