Sample_type Chick Adult
Down 11 -23
Down 10 -25
Feather -22
Feather 9 -24
Primary 10.5 -22.5
No adult 11.5
我想制作一个包含两个变量(小鸡和成人)的散点图,这两个变量是“分隔”的,因为它是由第三个变量(样本类型)的子集分隔的。我在大学课程中被教导使用代码来做到这一点:
plot(Chick~Adult,type="n")
points(Chick~Adult,subset=(Sample_type="Down"),col="blue")
points(Chick~Adult,subset=(Sample_type="Feather"),col="red")
points(Chick~Adult,subset=(Sample_type="Primary"),col="green")
我四处寻找类似的问题,我能找到的最接近的是:
如何在 R 中绘制数据框的子集?但是根据建议的代码尝试 with(chick_v_adult[chick_v_adult$Sample_type="Down",], plot(Chick,Adult))
和
plot(Chick[Sample_type="Down"],Adult[Sample_type="Down"])
后,我收到了错误
Error: unexpected '=' in "with(chick_v_adult[chick_v_adult$Sample_type="
和
Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
3: In min(x) : no non-missing arguments to min; returning Inf
4: In max(x) : no non-missing arguments to max; returning -Inf
分别。这然后导致我这样做:
plot.window(...)中的错误:需要有限的“xlim”值 - 我不确定如何将此处的建议应用于我的具体问题。
所以 - 我很确定这与丢失的数据或我试图子集化的第三个变量的性质有关。我不知道a)如何找出是否是数据的问题,或者是否是我的代码的问题(尽管我不认为代码是问题),或者b)我需要进行哪些调整实际上应该对我的数据和/或代码进行修改,以获得我想要的图表!非常感谢在其他地方提供帮助或指导。
(注意:我也遇到过这个:
R 用 NA 值绘制数据集,但我不想这样做,因为我的数据不是线性的,因此任何填充都将是完全随机且不正确的。另外,当我简单地执行 plot(Chick~Adult)
时,丢失的数据不是问题 - 丢失数据的行将自动不包含在结果图中。)
with(chick_v_adult[chick_v_adult$Sample_type=="Down",], plot(Chick,Adult))
有效的代码是:
#create an empty plot
plot(Chick~Adult,type="n")
#create separate vectors for each subset you want
Dvalues<-chick_v_adult[chick_v_adult$Sample_type=="Down",]
Fvalues<-chick_v_adult[chick_v_adult$Sample_type=="Feather",]
Pvalues<-chick_v_adult[chick_v_adult$Sample_type=="Primary",]
#plot the points using the new vectors
points(Dvalues$Chick~Dvalues$Adult,col="Red",pch=16)
points(Fvalues$Chick~Fvalues$Adult,col="Blue",pch=16)
points(Pvalues$Chick~Pvalues$Adult,col="Green",pch=16)
#plot lines over the points
abline(lm(Dvalues$Chick~Dvalues$Adult),col="Red")
abline(lm(Fvalues$Chick~Fvalues$Adult),col="Blue")
abline(lm(Pvalues$Chick~Pvalues$Adult),col="Green")