L oop через фрейм данных, получить имя заголовка столбца и затем использовать его в качестве параметра в ggplot - PullRequest
0 голосов
/ 23 января 2020

Привет Пожалуйста, помогите мне в этом

У меня есть фрейм данных с заголовком

csvfile
experiment control par1 par2 par3
1          a        1    11   21 
1          b        5    12   21
2          a        2    11   50 
2          b        3    13   31
3          a        4    11   35
3          b        2    11   35

, поэтому я хочу l oop через имя столбца (кроме эксперимента и контроля)

for (i in column_name)
{
  if (i !="experiment" &  i !="control )
  {filename = paste(i, 'plot.jpg', sep = '_')
  save_path = paste('/filepath', filename, sep='/')
  print(csvfiles$i) 
  jpeg(save_path, width = 1083, height = 643)

  p1 <- ggplot(csvfiles, aes(x=control, y= i, color = control)) + geom_violin() + geom_boxplot(width = 0.1) 
  print(p1)
  dev.off()
  }

  }

теперь я вижу проблему R думает, что y = i = строка вместо того, чтобы смотреть на фрейм данных [i], поскольку print (csvfiles $ i) -> NULL

как мне исправить это?

Спасибо

1 Ответ

2 голосов
/ 23 января 2020

Мы можем создать функцию, использовать некоторую нестандартную оценку для доступа к именам столбцов из данных

library(ggplot2)

create_plots <- function(data, col) {
  filename = paste(col, 'plot.jpg', sep = '_')
  save_path = paste('/filepath', filename, sep='/')
  jpeg(save_path, width = 1083, height = 643)

  p1 <- ggplot(data, aes(x=control, y= !!sym(col), color = control)) + 
        geom_violin() + geom_boxplot(width = 0.1) 
  print(p1)
  dev.off()
}

и применить ее к различным именам столбцов, используя lapply

cols <- names(df)[!names(df) %in% c('experiment', 'control')]
lapply(cols, create_plots, data = df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...