У меня есть вопрос, который, вероятно, прост, но я новичок в программировании и пытаюсь понять, как это сделать. Мне нужно запустить пользовательскую функцию для каждого значения переменной.
У меня есть набор данных, который выглядит примерно так
library(plm)
data("Grunfeld")
Grunfeld$quadri <- as.numeric(cut2(Grunfeld$year, g=4))
Grunfeld<-Grunfeld %>% select(-c(value,capital))
Я написал функцию, которую я должен применить к каждому из значений в quadri
, которая выглядит примерно так
simil<- function(dataset,number){ # I create a function that calculates role equivalence
sim_n <- dataset %>% filter(quadri==number) %>%select(-quadri) # the function is calculated for every year
### I need to spread the data before making correlation
wide_n <- sim_n %>% spread (firm, inv)
#To deal with NA, I follow the literature and consider those as 0s
wide_n[is.na(wide_n)] <- 0
cor_n <- as.data.frame(cor(wide_n[,(2:ncol(wide_n))]))
# then i gather the data in long from
sim_fin_n <- data.frame( # create a dataframe
firm= rep(rownames(cor_n)[row(cor_n)]),
`cmp_firm`= rep(colnames(cor_n)[col(cor_n)]),
`sim_inv`=unlist(cor_n),
stringsAsFactors=FALSE)
rownames(sim_fin_n) <- NULL
sim_fin_n<-sim_fin_n%>%filter(firm!=cmp_firm)
}
Я хотел бы повторить свою функцию для всех значений в quadri
. Я мог бы сделать это одно за другим, но это было бы неэффективно, потому что в реальных данных у меня есть сотни значений
# one by one
sim1<-simil(Grunfeld,1)%>% mutate(quadri=1)
sim2<-simil(Grunfeld,2)%>% mutate(quadri=2)
sim3<-simil(Grunfeld,3)%>% mutate(quadri=3)
sim4<-simil(Grunfeld,4)%>% mutate(quadri=4)
Я хотел бы запустить функцию для каждого значения в quadri
возможно, мне нужен для l oop или функции применения, но я изо всех сил пытаюсь понять, как.
Я посмотрел вокруг, и этот вопрос похож, R повторяет функцию , но я не могу применить ответ к своему делу
Заранее большое спасибо за Ваша помощь
С наилучшими пожеланиями