Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将r中数据框中的数字替换为颜色_R_Colors_Replace - Fatal编程技术网

将r中数据框中的数字替换为颜色

将r中数据框中的数字替换为颜色,r,colors,replace,R,Colors,Replace,我有以下数据框 df<-data.frame(x=c("A","B","C"),colour=c(0.3,0.6,0.9)) x colour 1 A 0.3 2 B 0.6 3 C 0.9 df如果您更改订单,您的方法将起作用: col2<-df[,"colour"] < 0.7 df[col2,"colour"]<-g[2] col1<-df[,"colour"] < 0.4 df[col1,"colour"]<-g[1]

我有以下数据框

df<-data.frame(x=c("A","B","C"),colour=c(0.3,0.6,0.9))

  x colour
1 A    0.3
2 B    0.6
3 C    0.9

df如果您更改订单,您的方法将起作用:

col2<-df[,"colour"] < 0.7
df[col2,"colour"]<-g[2]
col1<-df[,"colour"] < 0.4
df[col1,"colour"]<-g[1]

col2您的0和1限制与OP不一致-您可以在此处使用-Inf和+Inf。此外,您还可以将颜色作为标签参数输入以进行剪切,如果需要,还可以转换为字符。@Spacedman感谢指针:我已经编辑了答案。Elizbeth,看看这个修改后的版本是否有效。@seancarmody我很喜欢你的一般方法的简洁性,但它似乎生成了NAs(请参见更新的问题),或者我遗漏了什么?因为现在>0.5行覆盖了之前完成的>0.7行。超过0.7的所有值也超过0.5。不管怎么说,这一系列测试完全是错误的方法,R方法是对值向量进行一次测试。@Spacedman Darn。我打字打错了。我将更新问题。事实上不,我没有打字错误。当所有超过0.7的值也超过0.5时,排序应该考虑这个问题。您正在用字符替换某些数值。难怪你会得到NAs。真的,不要这样做,甚至不要尝试这样做。我怀疑您只是一次性运行了这段代码—不要—当您试图找出哪里出了问题时,一次只执行一行,然后查看变量的值是什么。在第一次更换后检查df是什么…再次,将其分解!切割(v,c(0,断裂,1))的值是多少?多少层?你的颜色向量有多长?
library(RColorBrewer)

g<-brewer.pal(3,"Greens")

col1<-df[,"colour"] < 0.4
df[col1,"colour"]<-g[1]
col2<-df[,"colour"] < 0.7
df[col2,"colour"]<-g[2]
col3<-df[,"colour"] >= 0.7
df[col3,"colour"]<-g[3]
v<-c(0.45,0.65,0.75,0.85,0.95)
breaks<-c(0.4,0.5,0.6,0.7,0.8,0.9)

#Create a colour for each section
cols<-brewer.pal(length(breaks)+1,"Greens")
#Replace the gsim values with colours using the breaks
v <- as.character(cut(v, c(-Inf, breaks, Inf),labels=cols))

 > v
[1] "#C7E9C0" "#74C476" "#41AB5D" "#238B45" "#005A32"
col2<-df[,"colour"] < 0.7
df[col2,"colour"]<-g[2]
col1<-df[,"colour"] < 0.4
df[col1,"colour"]<-g[1]
breaks <- c(0.4, 0.7)  # you can add more cut points here
cols <- brewer.pal(length(breaks) + 1, "Greens")
df$colour <- as.character(cut(df$colour, c(-Inf, breaks, Inf), labels=cols))