Цикл по фреймам данных и построение графиков - PullRequest
0 голосов
/ 04 февраля 2019

Я работаю в RStudio, пытаюсь составить несколько простых графиков и корреляций.Вероятно, это очень простое исправление, но я не могу просмотреть свои файлы и создать графики.Ниже приведены файлы, циклы и пример фрейма данных

> ls()
 [1] "let-7b-5p"     "let_7a_5p"     "miR_125b_5p"   "miR_16_5p"    "miR_182_5p"    "miR_21_5p"    "miR_30e_5p"    "miR_320c_2_3p" "miR_92a_1_3p"  "miR_92b_3p"
[10]  "rRNA-45S"      "tRNA_3p_1"    "tRNA_5p_2"    
> files <- ls()
> for(i in files){
+   plt <- ggplot(`i`, aes_string(x="Five", y = "Three")) +
+       geom_point(shape=16) +
+       geom_smooth(method=lm) 
+   print(plt)
+   pearson <- cor.test(`i`$Five, `i`[, "Three"], method = "pearson", conf.level = 0.95)
+   print(pearson)
+ }
Error: `data` must be a data frame, or other object coercible by `fortify()`, not a character vector
> print(`let-7b-5p`)
       Five        Three       One
A      14.06       13.14       13.62
B      14.45       14.64       14.21
C       7.84       10.23        8.05
D      12.84       13.13       13.07
E      16.55       15.97       16.01
F      12.92       12.02       12.37

Я понимаю, что он видит "файлы" как символьный вектор, но я не уверен, почему это проблема при передаче в цикл.

1 Ответ

0 голосов
/ 04 февраля 2019

Передача строки в виде символьного вектора, когда функция (ggplot здесь) хочет, чтобы data.frame не работала в цикле по той же причине, по которой она не будет работать вне цикла ... R не делаетНе знаю, чтобы получить объект с именем из глобальной среды.

Я бы предложил (аналогично комментарию @ patL) извлечь объект и запустить цикл:

for(i in files){
  dat <- get(i) # new line
  plt <- ggplot(dat, aes_string(x="Five", y = "Three")) + 
  ...
}

Следует отметить, что ls() вернет символьный вектор всех объектовв среде, независимо от их класса, поэтому, если у вас есть что-то еще, вы можете столкнуться с проблемами там.Судя по всему, вы можете использовать аргумент pattern для ls(), чтобы гарантировать, что вы по крайней мере вернете вектор имен объектов, соответствующих определенным шаблонам.

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