Преобразовать строку в аргумент объекта для функции суммирования в R - PullRequest
0 голосов
/ 27 сентября 2019

m6 dataframe Я реализую цикл по именам столбцов набора данных.Код выглядит следующим образом:

for(i in 14:20){
  col_name <- colnames(m6[i])          #m6 is the name of the dataframe see the image for reference

  mean_group1 = paste(paste(col_name, "group1", sep="_"),"= mean(",col_name, "[group == '1'])",sep="") #here [group == '1'], group is the name of a column in m6 dataframe  
  mean_group2 = paste(paste(col_name, "group2", sep="_")," = mean(",col_name, "[group == '2'])", sep="")
  mean_group3 = paste(paste(col_name, "group3", sep="_")," = mean(",col_name, "[group == '3'])",sep="")

  formula_f_2 <- as.formula(paste(mean_group1, mean_group2,mean_group3, sep = ""))

  pl <- m6 %>%
  group_by(CHILD_ID)  %>%           #CHILD_ID is the name of  a column which is being grouped 
  summarize(formula_f_2)
}

Проблема с этим кодом заключается в том, что он выдает ошибку.Я думаю, что это возможно из-за того, что я передал строку в качестве аргумента функции Summarize, которую она не в состоянии понять.Когда я реализую код без цикла, то есть путем записи сегмента для каждого случая, он работает нормально, а код работает нормально.Код, который работает, выглядит следующим образом:

#This is the code which I wrote for when i is 20 i.e. for colnames(m6[20])

pl <- m6 %>%  group_by(CHILD_ID)  %>%  summarize(mean_group1 = mean(A_SD_zscore[group == '1']),
        mean_group2 = mean(A_SD_zscore[group == '2']),mean_group3 = mean(A_SD_zscore[group == '3']))
#
#Here m6 is a dataset on which I am applying group and summarize function
#Here A_SD_zscore is colname(m6[20])

Вывод, который я получаю, когда пишу единичный фрагмент правильного кода.

Output that I want

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...