2015-08-12 3 views
1

Я пытаюсь получить boxplot с использованием программного обеспечения R в кадре данных, но есть много столбцов, прикрепленных к кадру данных. Вот кодЗацикливание кадра данных для создания boxplot

path = "E:/plot/2" 
fileList = list.files(path=path,pattern="\\.teTestResult",full.names=T) 
myfiles = lapply(fileList, read.csv,header=TRUE,sep=";") 

a <- data.frame(myfiles) 
attach(a) 
boxplot(Return~gama) 
boxplot(Return~theta) 
boxplot(Return~detectionsLimit) 
boxplot(Return~NSMOOTH) 
boxplot(Return~NREF) 
boxplot(Return~NOBS) 
boxplot(Return.1~gama.1) 
boxplot(Return.1~theta.1) 
boxplot(Return.1~detectionsLimit.1) 
boxplot(Return.1~NSMOOTH.1) 
boxplot(Return.1~NREF.1) 
boxplot(Return.1~NOBS.1) 
... 
boxplot(Return.9~NOBS.9) 

Этот код работает, но он не доставлял хороший, потому что это очень долго. Как я могу упростить это использование R? Спасибо большое за помощь

~ Update ~

Я пытаюсь использовать для цикла, так как имя переменной им пытаются boxplot отличается только в количестве, так что здесь

for (i in 1:9){ 
boxplot(Return.[i]~gama.[i]) 
    } 

Но произошла ошибка говоря это

Error in eval(expr, envir, enclos) : object 'Return.' not found 

Я до сих пор наблюдаем много проблем с программированием R Спасибо так много для ваших ответов.

+0

укажите, пожалуйста, имена переменных вашего data.frame; Я бы угадал, как вы ошиблись в переменных, вы пропустили $ и prbly, чтобы набирать 'boxplot (с помощью (a, get (paste0 (« Return. », [I]))) с помощью (a, get (paste0) («gama.», [i]))) ' – grrgrrbla

+0

@grrgrrbla Спасибо за ответ, я попробовал функцию attach (a), чтобы подставить $. , и я пробовал ваш код ' for (i in 1: 9) { boxplot (с (a, get (paste0 ("Return.", [I]))) ~ с (a, get (paste0 ("gama.", [I]))) } ' но я испытать ошибку из '[]' он говорит, как это, 'ошибка: неожиданный '[' в: «для (я в 1: 9) { boxplot (с (а, получаем (paste0 («Return.», [' – user3292755

+0

вы (и тоже меня тоже) забыли') 'проверить все, pl легкость немного задуматься – grrgrrbla

ответ

1

Если вы объединяете список данных с функцией data.frame(), вы привязываете данные к кадрам. если все файлы имеют такую ​​же структуру, что я предлагаю вам объединить их с помощью rbind:

library(dplyr) 
for(i in 1:length(myfiles)) myfiles[[i]]$nr = i # if you need to know the origin of the data 
df = bind_rows(myfiles) 

Различия между различными файлами можно сделать огранкой, но так как вам нужны участки для различных переменных, которые вы, вероятно, можете» t сократите свой код:

library(ggplot2) 
ggplot(df, aes(factor(gama), Return)) + geom_boxplot() + facet_wrap(~ nr) 
ggplot(df, aes(factor(theta), Return)) + geom_boxplot() + facet_wrap(~ nr) 
ggplot(df, aes(factor(detectionsLimit), Return)) + geom_boxplot() + facet_wrap(~ nr) 
ggplot(df, aes(factor(NSMOOTH), Return)) + geom_boxplot() + facet_wrap(~ nr) 
ggplot(df, aes(factor(NREF), Return)) + geom_boxplot() + facet_wrap(~ nr) 
ggplot(df, aes(factor(NOBS), Return)) + geom_boxplot() + facet_wrap(~ nr) 
Смежные вопросы