楼主: zx851218
7850 7

[问答] R语言求助 [推广有奖]

  • 0关注
  • 2粉丝

已卖:130份资源

本科生

86%

还不是VIP/贵宾

-

威望
0
论坛币
894 个
通用积分
58.3904
学术水平
2 点
热心指数
6 点
信用等级
1 点
经验
4062 点
帖子
146
精华
0
在线时间
56 小时
注册时间
2008-2-14
最后登录
2024-8-10

楼主
zx851218 在职认证  发表于 2013-6-28 09:23:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
想用R语言中maptools工具包将中国31省市分类着色,各个省市数值不同,已经分成了三类,第一类用红色,第二类用绿色,第三类用其他颜色,采用条件语句,但是总是出现错误,现将程序粘贴与此,请各位帮忙,谢谢!
程序:
provname=c("北京市","天津市","河北省","山西省","内蒙古自治区","辽宁省","吉林省","黑龙江省","上海市","江苏省","浙江省","安徽省","福建省","江西省","山东省","河南省","湖北省","湖南省","广东省","广西壮族自治区","海南省","重庆市","四川省","贵州省","云南省","西藏自治区","陕西省","甘肃省","青海省","宁夏回族自治区","新疆维吾尔自治区");
pop=c(0.703588,0.837046,1.069312,1.0652,1.08709,0.92414,0.858264,0.876926,1.261306,1.27877,1.227256,1.020232,0.910269,0.95867,1.219773,0.959841,1.113117,1.07381,1.431527,0.872383,0.773907,0.864137,1.289779,1.118233,0.975587,0.643821,1.05085,0.928015,0.717806,0.817642,1.071703);
if(pop>1.22)
{provcol=rgb(red=1-pop/max(pop)/2,green=0,blue=0)}
else if(pop<0.83)
{provcol=rgb(red=0,green=1-pop/max(pop)/2,blue=0)}
else
{provcol=rgb(red=1-pop/max(pop)/2,green=1-pop/max(pop)/2,blue=0)}
plot(x,col=getColor(x,provname,provcol,"white"),xlab="",ylab="");

出现的错误信息:
警告信息:
In if (pop > 1.22) { : 条件的长度大于一,因此只能用其第一元素
> else if(pop<0.83)
错误: 意外的'else' in "else"
> {provcol=rgb(red=0,green=1-pop/max(pop)/2,blue=0)}
> else
错误: 意外的'else' in "else"


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 内蒙古自治区 中国31省市 Green 请各位帮忙 西藏自治区 黑龙江省 内蒙古 河北省 天津市

回帖推荐

kaifengedu 发表于6楼  查看完整内容

貌似应该这样

咕舟蓑笠 发表于4楼  查看完整内容

if(pop>1.22) {provcol=rgb(red=1-pop/max(pop)/2,green=0,blue=0)} else if(pop
已有 1 人评分论坛币 收起 理由
happy_287422301 + 100 鼓励积极发帖讨论

总评分: 论坛币 + 100   查看全部评分

沙发
咕舟蓑笠 发表于 2013-6-28 11:33:58
如果要用if做判断,那么你的例子中要用到for来遍历每一个元素,然后在另一个数组的对应位置元素赋值。

否则,你应该使用下标的条件运算provcol[pop>1.2] <- exp这样的形式。

记住,r的变量是个数组,不是一个值,这点和c不一样
已有 1 人评分论坛币 收起 理由
happy_287422301 + 100 鼓励积极发帖讨论

总评分: 论坛币 + 100   查看全部评分

藤椅
zx851218 在职认证  发表于 2013-6-28 15:28:48
咕舟蓑笠 发表于 2013-6-28 11:33
如果要用if做判断,那么你的例子中要用到for来遍历每一个元素,然后在另一个数组的对应位置元素赋值。

否 ...
因为初学所以不懂这些,请问具体如何改进?谢谢
已有 1 人评分经验 收起 理由
happy_287422301 + 100 补偿

总评分: 经验 + 100   查看全部评分

板凳
咕舟蓑笠 发表于 2013-6-28 17:50:55
if(pop>1.22)
{provcol=rgb(red=1-pop/max(pop)/2,green=0,blue=0)}
else if(pop<0.83)
{provcol=rgb(red=0,green=1-pop/max(pop)/2,blue=0)}
else
{provcol=rgb(red=1-pop/max(pop)/2,green=1-pop/max(pop)/2,blue=0)}
plot(x,col=getColor(x,provname,provcol,"white"),xlab="",ylab="");
你试试修改为:

length(provcol) <- length(pop)
provcol[pop>=1.22]=rgb(red=1-pop/max(pop)/2,green=0,blue=0)
provcol[pop<0.83]=rgb(red=1-pop/max(pop)/2,green=0,blue=0)
provcol[pop>=0.83 & pop<1.22]=rgb(red=1-pop/max(pop)/2,green=1-pop/max(pop)/2,blue=0)

plot(x,col=getColor(x,provname,provcol,"white"),xlab="",ylab="");
已有 1 人评分论坛币 热心指数 收起 理由
happy_287422301 + 100 + 2 精彩帖子

总评分: 论坛币 + 100  热心指数 + 2   查看全部评分

报纸
pandaxiong2012 发表于 2013-6-30 01:45:07
学习了。。。。
最近一直在学R,累坏了,而且进展太慢!

地板
kaifengedu 发表于 2013-7-1 08:09:07
貌似应该这样
  1. provname=c("北京市","天津市","河北省","山西省","内蒙古自治区","辽宁省","吉林省","黑龙江省","上海市","江苏省","浙江省","安徽省","福建省","江西省","山东省","河南省","湖北省","湖南省","广东省","广西壮族自治区","海南省","重庆市","四川省","贵州省","云南省","西藏自治区","陕西省","甘肃省","青海省","宁夏回族自治区","新疆维吾尔自治区");
  2. pop=c(0.703588,0.837046,1.069312,1.0652,1.08709,0.92414,0.858264,0.876926,1.261306,1.27877,1.227256,1.020232,0.910269,0.95867,1.219773,0.959841,1.113117,1.07381,1.431527,0.872383,0.773907,0.864137,1.289779,1.118233,0.975587,0.643821,1.05085,0.928015,0.717806,0.817642,1.071703);
  3. provcol <- c()
  4. length(provcol) <- length(pop)
  5. provcol[pop>=1.22]=rgb(red=1-pop[color=red][pop>=1.22]/[/color]max(pop)/2,green=0,blue=0)
  6. provcol[pop<0.83]=rgb(red=1-pop[color=red][pop<0.83]/[/color]max(pop)/2,green=0,blue=0)
  7. provcol[pop>=0.83 & pop<1.22]=rgb(red=1-pop[color=red][pop>=0.83 & pop<1.22][/color][color=black]/[/color]max(pop)/2,green=1-pop[pop>=0.83 & pop<1.22]/max(pop)/2,blue=0)
  8. plot(x,col=getColor(x,provname,provcol,"white"),xlab="",ylab="");
复制代码

7
luolxy 发表于 2013-7-1 09:06:09
氛围歌特 5  

8
bailihongchen 发表于 2015-2-13 11:04:05
进来学习一下了,顶一个

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 22:10