2011-11-17 71 views
0

我有一個結構問題。 這是我正在做的一個例子。爲什麼我的圖形是空的?

x <- c(211.50, 200.50, 148.60, 144.20, 132.20, 159.80, 107.70, 91.40, 63.10, 62.10, 55.70, 74.60, 224.90, 208.001, 45.80, 133.50, 122.70, 161.70, 160.00, 136.80, 92.20, 91.20, 79.20, 109.90, 244.60, 212.20, 147.20, 129.30, 118.50, 165.80, 120.60, 97.90, 69.30, 65.50, 59.10, 81.90, 94.15, 114.20, 131.03, 133.89, 132.25, 153.51) 

y <- x 
Ref <- c(rep("ref1",36), rep("ref2",6)) 
ID <- c(rep("id1",6), rep("id2",6),rep("id3",6),rep("id4",6),rep("id5",6),rep("id6",6),rep("id7",6)) 

data.split <- data.frame(Ref,ID,x,y) 
l.ref <- ddply(data.split, .(Ref), "nrow") 
vec1 <- c(rep(1,l.ref$nrow[1])) 
for (i in 2:length(l.ref$Ref)) { 
    vec2 <- c(rep(i,l.ref$nrow[i])) 
    vec3 <- append(vec1,vec2, after =length(vec1)) 
    vec1 <- vec3 
} 
vec_ref <- vec3 

l.id <- ddply(data.split, .(ID), "nrow") 
vec1 <- c(rep(1,l.id$nrow[1])) 
for (i in 2:length(l.id$ID)) { 
vec2 <- c(rep(i,l.id$nrow[i])) 
vec3 <- append(vec1,vec2, after =length(vec1)) 
vec1 <- vec3 
} 
vec_id <- vec3 
df <- structure(list(Ref = structure(vec_ref, .Label = l.ref$Ref, class = "factor"), 
Id = structure(vec_id, .Label = l.id$ID, class = "factor"), 
x = data.split$x, y = data.split$y), 
.Names = c("Ref", "Id", "x", "y"), 
row.names = c(NA, -length(data.split$x)), class = "data.frame") 

ggplot(data = df, aes(x = x, y = y, colour = df$Ref)) + 
    geom_point(aes(shape = df$Id)) + scale_shape_manual(value=1:length(l.id$ID)) 

警告消息: 1:在[<-.factor*tmp*,is.na(值),值= 「NA」): 無效因子水平的NAS生成 2:含有缺失值刪除42行(geom_point )。

我有空的圖形,我不明白是什麼問題?

我在做什麼錯了?

+2

我無法運行您的代碼:「錯誤:找不到對象'l.ref'」 – Spacedman

+0

請問您可以將ad.ref和l.id添加到示例中嗎? –

+0

該代碼不適用於我,data.split已創建,但l.ref是一個不存在的對象。你還需要更清楚你想做什麼,以及爲什麼它涉及結構。在這個階段你的代碼看起來很不清楚。 –

回答

5

你已經搞亂了你的數據框中的因素。什麼是'結構'的業務?丟失它,並使用這個:

df = data.frame(Ref = factor(vec_ref,labels=l.ref$Ref), 
     Id = factor(vec_id,labels=l.id$ID), 
     x=data.split$x,y=data.split$y) 

然後ggplot工作。

+0

是的,非常感謝你 – Tali

+1

任何機會,你可以點擊小勾選框,讓大家都知道你有答案? :) – Spacedman