2016-09-12 2 views
0

У меня возникла проблема с графикой отдельных гистограмм после использования lapply на таблице данных. В инструкции отображаются все гистограммы, но мне нужен доступ к ним по отдельности. Все объекты гистограмм доступны в списке, но когда я обращаюсь (например) к последнему объекту гистограммы и пытаюсь построить его, возникают ошибки. Код показан ниже.построение отдельных гистограмм после lapply в R

Я использую набор данных автомобилей mt и формирую из него таблицу.

library(data.table) 
mtcars$carname <- rownames(mtcars) 
mtcars_dt <- data.table(mtcars) 
histograms<- mtcars_dt[, lapply(.SD[, 1:10, with=F], hist), by=cyl] 
# The above will plot all 30 data frames ie 10 for each value of cyl (3 of) 
# I now want to plot a single histogram, lets say the 10th one 
b=histograms[[10]] # this is a histogram object 
plot(b) # try to plot the object 
# 
# Result is the error shown below: 

# Error in if (freq && !equidist) warning("the AREAS in the plot are wrong -  
#- rather use 'freq = FALSE'") : 
#missing value where TRUE/FALSE needed 
# In addition: Warning messages: 
# 1: In min(x, na.rm = na.rm) : 
# no non-missing arguments to min; returning Inf 
# 2: In max(x, na.rm = na.rm) : 
##no non-missing arguments to max; returning -Inf 
#3: In mean.default(h) : argument is not numeric or logical: returning NA 

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

Цените какую-либо помощь

Благодарности G

ответ

0

Я не data.table эксперт. Но я хотел бы сделать что-то вроде этого, используя ggplot2 для черчения:

Сначала нужно создать функцию, которая Участки под Застройку три гистограмм за cyl группа

foo <- function(x){ 
require(ggplot2) 
ggplot(mtcars, aes(x = x)) + geom_histogram() + facet_grid(. ~ cyl) 
} 

lapply функции над столбцами, за исключением участков в списке

histograms <- lapply(mtcars, foo) 

Теперь вы можете получить доступ к отдельным участкам на

histograms[3] 
# or 
histograms$disp 

enter image description here

+0

Спасибо, я попробую ваше решение с таблицами, и оно должно работать, поскольку оно работает для фреймов данных. Иначе я переведу. – Graham

Смежные вопросы