Используйте qplot для рисования только одного подмножества данных

У меня есть список с именем d вроде этого:

V1 — целочисленный набор от 0 до 50 V2 — действительный набор от 1500 до 1800 V3 — целочисленный набор от 1 до 50

Всего в списке 5100 объектов.

Теперь я хотел бы построить гистограмму V2, где V1 = определенное число (0, 1 или 10 и т. д.)

Я пробовал разные способы:

factor(d$V1)
qplot(V2, data=d, V1 = 1)        --> not successful 
d.subset <- subset(d, d$V1 = 1)  --> not successful

Я действительно схожу с ума от этого. Проверил характеристики d$V1 но ничего странного не нашел. Кто-нибудь может мне помочь?

is.factor(d$V1) 

[1] TRUE

str(d$V1)  Factor w/ 51 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...

levels(d$V1)  
[1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" 
[20] "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30" "31" "32" "33" "34" "35" "36" "37""38" 
[39] "39" "40" "41" "42" "43" "44" "45" "46" "47" "48" "49" "50" "51"

person Nguyen Minh Trung    schedule 04.02.2013    source источник
comment
Является ли d списком или фреймом данных? (Что вы получите, попробовав dput(head(d))?   -  person David Robinson    schedule 05.02.2013
comment
Если вы перейдете от использования qplot к ggplot() + geom_xxxx, то stackoverflow.com/questions/14431246/ будет полезно   -  person mnel    schedule 05.02.2013


Ответы (1)


Измените строку:

d.subset <- subset(d, d$V1 = 1)

to

d.subset <- subset(d, V1 == 1)

Обратите внимание на двойное равенство (==) для обозначения логического оператора. = используется для назначения и не подмножает фрейм данных.

Наконец, вы можете поместить 1 в кавычки, если хотите получить уровень "1" фактора (который может не совпадать с числовым 1).

d.subset <- subset(d, V1 == "1")
person David Robinson    schedule 04.02.2013