楼主: xiaohaigege
2092 8

[问答] 新手,刚开始学习,都不太懂,求教下面的代码哪里错了 [推广有奖]

  • 0关注
  • 0粉丝

小学生

71%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
108 点
帖子
7
精华
0
在线时间
10 小时
注册时间
2016-6-13
最后登录
2017-5-7

楼主
xiaohaigege 发表于 2016-10-17 16:54:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
options(digits=2)
Student <- c("John Davis","Angla Williams","Bullwinkle Moose","David Jones",
             "Janice Markhammer","Chery1 Cushing","Rwuven Ytzrhk","Greg Knox",
              "Joel England","Mary Rayburn")
Math    <- c(502,600,412,358,495,512,410,625,573,522)
Science <- c(95,99,80,82,75,85,80,95,89,86)
English <- c(25,22,18,15,20,28,15,30,27,18)
roster  <- data.frame(Student,Math,Science,English,stringsAsFactos=FALSE)

z       <- scale(roster[,2:4])
score   <- apply(z,1,mean)
roster  <- cbind(roster,score)

y       <- quantile(score,c(0.8,0.6,0.4,0.2))
roster$grade<-[score >= y[1]] <- "A"
roster$grade<-[score < y[1] & scroe >=y[2]] <- "B"
roster$grade<-[score < y[2] & score >=y[3]] <- "C"
roster$grade<-[score < y[3] & score >=y[4]] <- "D"
roster$grade<-[score < y[4]] <="F"

name     <- strsplit((roster$Student)," ")
Lastname <- sapply(name,"[",2)
Firstname<- sapply(name,"[",1)
roster   <- cbind(Firstname,Lastname,roster[,-1])
roster   <- roster[order(Lastname,Firstname),]
roster
就是R语言实战书本例子,自己敲一遍,然后居然查不出来哪里的问题,到底是哪里的问题,从quantile函数开始就出错

二维码

扫码加我 拉你入群

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

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

关键词:Student options Option tions Dig

沙发
johnmy 发表于 2016-10-17 17:17:57
出错提示是什么,我好像试过这个代码。直接从书上复制代码有问题吗?

藤椅
xiaohaigege 发表于 2016-10-18 10:08:41
出错代码如下:
错误: 意外的'[' in "roster$grade <-["
> roster$grade <-[score < y[1] & scroe >=y[2]] <- "B"
错误: 意外的'[' in "roster$grade <-["
> roster$grade <-[score < y[2] & score >=y[3]] <- "C"
错误: 意外的'[' in "roster$grade <-["
> roster$grade <-[score < y[3] & score >=y[4]] <- "D"
错误: 意外的'[' in "roster$grade <-["
> roster$grade <-[score < y[4]] <="F"
错误: 意外的'[' in "roster$grade <-["
>
> name     <- strsplit((roster$Student)," ")
Error in strsplit((roster$Student), " ") : 非字符参数
> Lastname <- sapply(name,"[",2)
Error in lapply(X = X, FUN = FUN, ...) : 找不到对象'name'
> Firstname<- sapply(name,"[",1)
Error in lapply(X = X, FUN = FUN, ...) : 找不到对象'name'
> roster   <- cbind(Firstname,Lastname,roster[,-1])
Error in cbind(Firstname, Lastname, roster[, -1]) : 找不到对象'Firstname'
> roster   <- roster[order(Lastname,Firstname),]
Error in order(Lastname, Firstname) : 找不到对象'Lastname'
> roster

板凳
xiaohaigege 发表于 2016-10-18 10:09:13
johnmy 发表于 2016-10-17 17:17
出错提示是什么,我好像试过这个代码。直接从书上复制代码有问题吗?
出错代码如下:
错误: 意外的'[' in "rostergrade<−[">rostergrade <-[score < y[1] & scroe >=y[2]] <- "B"
错误: 意外的'[' in "rostergrade<−[">rostergrade <-[score < y[2] & score >=y[3]] <- "C"
错误: 意外的'[' in "rostergrade<−[">rostergrade <-[score < y[3] & score >=y[4]] <- "D"
错误: 意外的'[' in "rostergrade<−[">rostergrade <-[score < y[4]] <="F"
错误: 意外的'[' in "rostergrade<−[">>name<−strsplit((rosterStudent)," ")
Error in strsplit((roster$Student), " ") : 非字符参数
> Lastname <- sapply(name,"[",2)
Error in lapply(X = X, FUN = FUN, ...) : 找不到对象'name'
> Firstname<- sapply(name,"[",1)
Error in lapply(X = X, FUN = FUN, ...) : 找不到对象'name'
> roster   <- cbind(Firstname,Lastname,roster[,-1])
Error in cbind(Firstname, Lastname, roster[, -1]) : 找不到对象'Firstname'
> roster   <- roster[order(Lastname,Firstname),]
Error in order(Lastname, Firstname) : 找不到对象'Lastname'
> roster

报纸
johnmy 发表于 2016-10-18 14:56:57
xiaohaigege 发表于 2016-10-18 10:09
出错代码如下:
错误: 意外的'[' in "rostergrade
options(digits=2)
Student <- c("John Davis", "Angela Williams", "Bullwinkle Moose",
               "David Jones", "Janice Markhammer", "Cheryl Cushing",
               "Reuven Ytzrhak", "Greg Knox", "Joel England",
               "Mary Rayburn")
Math <- c(502, 600, 412, 358, 495, 512, 410, 625, 573, 522)
Science <- c(95, 99, 80, 82, 75, 85, 80, 95, 89, 86)
English <- c(25, 22, 18, 15, 20, 28, 15, 30, 27, 18)
roster <- data.frame(Student, Math, Science, English,
                       stringsAsFactors=FALSE)
z <- scale(roster[,2:4])
score <- apply(z, 1, mean)
roster <- cbind(roster, score)
y <- quantile(score, c(.8,.6,.4,.2))
roster$grade[score >= y[1]] <- "A"
roster$grade[score < y[1] & score >= y[2]] <- "B"
roster$grade[score < y[2] & score >= y[3]] <- "C"
roster$grade[score < y[3] & score >= y[4]] <- "D"
roster$grade[score < y[4]] <- "F"
name <- strsplit((roster$Student), " ")

地板
johnmy 发表于 2016-10-18 14:57:50
roster$grade后面不应该有赋值符号
已有 1 人评分经验 论坛币 收起 理由
李会超 + 40 + 5 热心帮助其他会员

总评分: 经验 + 40  论坛币 + 5   查看全部评分

7
xiaohaigege 发表于 2016-10-18 19:05:39
johnmy 发表于 2016-10-18 14:57
roster$grade后面不应该有赋值符号
那后面的飞字符参数以及找不对心name这个问题呢,还是有问题啊

8
johnmy 发表于 2016-10-18 20:20:29
xiaohaigege 发表于 2016-10-18 19:05
那后面的飞字符参数以及找不对心name这个问题呢,还是有问题啊
源代码没有问题,你再对照一下吧。

9
xiaohaigege 发表于 2016-10-19 10:26:23
johnmy 发表于 2016-10-18 20:20
源代码没有问题,你再对照一下吧。
现在核对了下,发现去掉了strsplit函数里的roster,只保留Student部分就可以,但是还是无法识别F等级,真是奇怪

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

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