我有一个像这样的矢量z
z <- as.numeric(as.factor(c("A","B","C","D","E","F","G","H")))
和不同日期的数据框df如下
df[[1]]
ID LON LAT
A 1 1
B 10 14
C 12 13
df[[2]]
ID LON LAT
A 2 3
B 11 18
D 12 13
df[[3]]
ID LON LAT
A 13 1
E 10 14
D 12 13
其中ID是z中的ID,但每天都可以不同。
我为矢量
的每个元素指定了一种颜色range01 <- function(x)(x-min(x))/diff(range(x))
rainbow(7)
cRamp <- function(x){
cols <- colorRamp(rainbow(7))(range01(x))
apply(cols, 1, function(xt)rgb(xt[1], xt[2], xt[3], maxColorValue=255))
}
我想用每天的颜色cRamp(z)绘制我的df,但到目前为止我还无法将每个df中的ID值与z中的ID值相关联。
这是我的代码:
for (i in 1:length(mydf)){
plot(df[[i]]$LON,df[[i]]$LAT, col = cRamp(z))
map(add=T,col="saddlebrown",interior = FALSE)
legend("topleft", legend=c(unique(df[[i]]$ID)), col=cRamp(z))
}
但是用于例如ID A每天都不一样!
非常感谢!
答案 0 :(得分:0)
您希望在df[[j]]$ID
中找到z
值的相应索引。这是一个简单的方法。
Rgames> foo<-c('a','b','c','d')
Rgames> bar <- c('b','d','a')
Rgames> indmatch <- match(bar,foo)
# As Roland pointed out, much better than "sapply(bar,function(j)which(foo==j))"
#b d a
#2 4 1
因此,如果您使用该输出,您可以将其用作颜色的索引:
col=cRamp(z)[indmatch]