【发布时间】:2015-07-24 15:19:43
【问题描述】:
我的最终目标是绘制颜色对应于高度的数据点(原始数据是 .csv 文件中的一列)。我已经使用高度列创建了一个数据框,现在我正在尝试创建一个新列,随着高度的增加分配颜色。范围是 0-400,所以我想每 50 英尺更改一次颜色。
e_miss_df$color <- ""
for (i in nrow(e_miss_df$e_miss.altitude.feet.)) {
if (i <= 50.0){
n <- "#00A600FF"
e_miss_df$color[i] <- n
} else if (i <= 100.0) {
n <- "#3EBB00FF"
e_miss_df$color[i] <- n
} else if (i <= 150.0) {
n <- "#8BD000FF"
e_miss_df$color[i] <- n
} else if (i <= 200.0){
n <- "#E6E600FF"
e_miss_df$color[i] <- n
} else if (i <= 250.0) {
n <- "#E8C32EFF"
e_miss_df$color[i] <- n
} else if (i <= 300.0) {
n <- "#EBB25EFF"
e_miss_df$color[i] <- n
} else if (i <= 350.0) {
n <- "#EDB48EFF"
e_miss_df$color[i] <- n
} else if (i <= 400.0) {
n <- "#F0C9C0FF"
e_miss_df$color[i] <- n
} else {
n <- "black"
e_miss_df$color[i] <- n
}
}
我没有收到任何错误,但该列没有被填满(第 6 行除外??)。我知道现在它的效率非常低,但我还是很新……任何想法/建议将不胜感激!如果你有更好的方法来获得情节,那就太好了哈哈
【问题讨论】:
-
试试
for (i in 1:nrow(e_miss_df$e_miss.altitude.feet.)){...。你循环的分隔符不正确,因为循环的开头,大概是1:,丢失了;不管是否有更好的方法来对此进行编程。在您的循环中,您并没有真正循环,而是只检查最后一个条目,即i=nrow(...)的情况。