我有一个名为fin
的数据框:
str(fin)
'data.frame': 158 obs. of 9 variables:
$ Species : chr "TRAT" "TRAT" "TRAT" "WRAT" ...
$ Site : chr "BAN" "BEX" "BEX" "BEX" ...
$ Year : chr "2011" "2010" "2011" "2012" ...
$ FR.CoYear: num 35.7 123.6 136.4 215.8 145.2 ...
$ Sample : int 31 NA 929 809 NA NA NA 30 215 NA ...
$ Young : num 16 NA 828 709 NA NA NA 45 235 NA ...
$ SiteYear : Factor w/ 65 levels "BAN 2011","BAN 2012",..: 1 4 5 6 7 1
我想针对FR.CoYear
中的5个物种中的每一个分别针对(fin$Young / fin$Sample)
绘制$Species
。
我尝试了here建议的方式;但是目前没有一个工作,我会非常感谢指导 - 这只是一个语法问题吗?
这就是我的尝试:
with(subset(fin,fin$Species == "TRAT"), plot(fin$FR.CoYear, fin$Young /fin$Sample))
## runs without error but no plot is produced
with(fin[fin$Species == "TRAT",], plot((fin$FR.CoYear, fin$Young / fin$Sample))
##gives the error: unexpected ',' in "with(fin[fin$Species == "TRAT",], plot((fin$FR.CoYear,"
plot(fin$FR.CoYear[fin$Species == "BLKI"],fin$Young / fin$Sample[fin$Species == "BLKI"])
##Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
如果这是非常基本的,我道歉,但我正在教自己R。
答案 0 :(得分:0)
如果没有您的数据样本,我无法测试下面的答案,但您的代码中有一些错误,我已尝试修复:
使用with
或subset
时,您无需重新声明名称
引用各列时的数据框。
原始代码:
with(subset(fin,fin$Species == "TRAT"), plot(fin$FR.CoYear, fin$Young /fin$Sample))
更改为:
with(subset(fin, Species == "TRAT"), plot(FR.CoYear, Young/Sample))
除了不需要在plot
的调用中重述数据框的名称外,您还错放了一个括号:
原始代码:
with(fin[fin$Species == "TRAT",], plot((fin$FR.CoYear, fin$Young / fin$Sample))
##gives the error: unexpected ',' in "with(fin[fin$Species == "TRAT",], plot((fin$FR.CoYear,"
更改为:
with(fin[fin$Species == "TRAT",], plot(FR.CoYear, Young / Sample))
fin$Young
也必须由Species
原始代码:
plot(fin$FR.CoYear[fin$Species == "BLKI"],fin$Young / fin$Sample[fin$Species == "BLKI"])
##Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
更改为:
plot(fin$FR.CoYear[fin$Species == "BLKI"],
fin$Young[fin$Species == "BLKI"]/ fin$Sample[fin$Species == "BLKI"])
如果您愿意学习ggplot2
,您可以轻松为每个物种值创建单独的图。例如(再次,如果没有您的数据样本,我无法测试):
library(ggplot2)
# One panel, separate lines for each species
ggplot(fin, aes(FR.CoYear, Young/Sample, group=Species, colour=Species)) +
geom_point() + geom_line()
# One panel for each species
ggplot(fin, aes(FR.CoYear, Young/Sample)) +
geom_point() + geom_line() +
facet_grid(Species ~ .)
答案 1 :(得分:0)
你可以试试这个:
基本情节,即两种:
plot(FR.CoYear ~ Young/Sample, data=subset(fin, Species == "TRAT"))
points(FR.CoYear ~ Young/Sample, col="red",data=subset(fin, Species == "WRAT"))
添加更多物种只需添加更多点数()。
ggplot2,即两种:
ggplot(subset(fin, Species %in% c("TRAT", "WRAT")),
aes(x=FR.CoYear,
y=Young/Sample,
color=Species))+
geom_point()
在这里添加更多物种只需在列表c()上添加引用。
我认为这对您有用,只需在需要时测试并更正var名称。
我最诚挚的问候