楼主: gdufsfit
2664 7

[问答] if()小括号里面的东西出问题了,大家来指教一下吧 [推广有奖]

  • 1关注
  • 0粉丝

博士生

10%

还不是VIP/贵宾

-

威望
0
论坛币
11 个
通用积分
0.2372
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
1737 点
帖子
82
精华
0
在线时间
335 小时
注册时间
2014-10-19
最后登录
2023-11-13

楼主
gdufsfit 学生认证  发表于 2014-10-30 23:36:50 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
先把代码贴一部分出来:


best=function(outcome,place){
  dat=read.csv("outcome-of-care-measures.csv",colClasses="character")
  subdat=data.frame()
  location=unique(dat$State)  #这一行提取State的所有取值
  if(place in location){  #就是这里出问题,提示错误Error: unexpected 'in' in:
#"  loc=as.vector(location)
  # if(place in"

我的初衷是提取dat里面State属性的所有取值,如果函数中的参数place的值在State中则进行下一步(这里就不贴出来了,无关紧要),然而它却提示if后面多了个in,这是怎么回事呢?应该怎么改正?谢谢!


二维码

扫码加我 拉你入群

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

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

关键词:Unexpected Character Location measures Expected unexpected character function 下一步 Error

沙发
robvsn 发表于 2014-10-31 06:13:09 |只看作者 |坛友微信交流群
改为 if (place %in% location) {...}
已有 1 人评分论坛币 学术水平 收起 理由
李会超 + 24 + 1 我很赞同

总评分: 论坛币 + 24  学术水平 + 1   查看全部评分

使用道具

藤椅
gdufsfit 学生认证  发表于 2014-10-31 12:54:27 |只看作者 |坛友微信交流群
robvsn 发表于 2014-10-31 06:13
改为 if (place %in% location) {...}
嘿,果然行了,谢谢大神~

使用道具

板凳
gdufsfit 学生认证  发表于 2014-10-31 17:04:40 |只看作者 |坛友微信交流群
robvsn 发表于 2014-10-31 06:13
改为 if (place %in% location) {...}
我在后面又遇到问题了......我现在就是要做一个函数把一个表的记录按照第二列的数字升序排序,遇到数字相同的话则按第一列首字母升序排序,就像下面这个表一样:
     [,1]                                                                     [,2]   
[1,] "ST FRANCIS MEDICAL CENTER"                         "13.6"
[2,] "NATCHITOCHES REGIONAL MEDICAL CENTER"    "13.7"
[3,] "BATON ROUGE GENERAL MEDICAL CENTER"       "13.8"
[4,] "OCHSNER FOUNDATION HOSPITAL"                   "14.3"
[5,] "ST TAMMANY PARISH HOSPITAL"                       "14.3"
[6,] "TOURO INFIRMARY"                                          "14.3"

我遇到的问题是我排序的时候明明看到表里面第二列的属性有几个在10以下,可是函数运行出来却没有了第二列属性在10以下的那些记录,就是下面这样:
[,1]                                                                                               [,2]  
[1,] "EAST CARROLL PARISH HOSPITAL"                                         "10.0"
[2,] "LSU HEALTH SCIENCES CENTER - SHREVEPORT"                      "10.1"
[3,] "NORTH OAKS MEDICAL CENTER, LLC"                                     "10.1"
[4,] "ST FRANCIS MEDICAL CENTER"                                              "10.1"
[5,] "LAKEVIEW REGIONAL MEDICAL CENTER"                                "10.2"
[6,] "WASHINGTON ST TAMMANY  REGIONAL MEDICAL CENTER"     "10.2"

可以看到第二列从10.0开始排,但实际上表里面有几条记录第二列是8点几和9点几的,这几条记录却被忽略了。所以我就想问一下究竟是什么原因呢?是不是因为第二列的类型是character呢?如果是的话怎么把它转化成numeric属性呢?真心求解答~

使用道具

报纸
robvsn 发表于 2014-10-31 17:28:30 |只看作者 |坛友微信交流群
gdufsfit 发表于 2014-10-31 17:04
我在后面又遇到问题了......我现在就是要做一个函数把一个表的记录按照第二列的数字升序排序,遇到数字相 ...
  dat=read.csv("outcome-of-care-measures.csv") # 默认会处理的
  colnames(dat) = c('a','b') # 为了方便举例子,改个列名
  rankedidx = order(dat$b) # 排序
  rankedDat = dat[rankedidx,] # 排序结果

另外 如果想从string转numeric,用as.numeric()

使用道具

地板
gdufsfit 学生认证  发表于 2014-11-1 14:29:53 |只看作者 |坛友微信交流群
robvsn 发表于 2014-10-31 17:28
dat=read.csv("outcome-of-care-measures.csv") # 默认会处理的
  colnames(dat) = c('a','b') # 为了 ...
好的,我遇到最后一个问题了......我排序之后要打印rankedDat[1,1],结果打印出来下面还有一行levels:...,是不是表示它变成一个factor了?怎么才能让下面levels那一行不显示呢?

使用道具

7
robvsn 发表于 2014-11-1 21:00:59 |只看作者 |坛友微信交流群
dat=read.csv("outcome-of-care-measures.csv",stringsAsFactor=F)
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
李会超 + 12 热心帮助其他会员
gdufsfit + 1 + 1 + 1 热心帮助其他会员

总评分: 论坛币 + 12  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

8
gdufsfit 学生认证  发表于 2014-11-1 21:42:39 |只看作者 |坛友微信交流群
robvsn 发表于 2014-11-1 21:00
dat=read.csv("outcome-of-care-measures.csv",stringsAsFactor=F)
终于全部解决了......万分感谢!!!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 01:26