作者clsmbstu (missing)
看板R_Language
标题Re: [问题] 用R数据条件判断分类
时间Thu Mar 16 21:13:06 2017
我的想法是用简单的条件式去判断就好,不用写回圈。
下面只是把你的目的写成条件式,再加一个保险,避免丢进去的物件不是两个元素:
####
multiple_judges <- function(x) {
if (length(x) != 2) {stop("The input should have 2 elements.")}
# 如果丢进去的东西不是两个值,程式会警告并停止执行
else {
if (x[1] >= 1 & x[1] <= 3 & x[2] == "M1") {return("K1")}
# 甲介於1~3间,且乙= M1得到K1
else if (x[1] >= 4 & x[1] <= 6 & x[2] == "M2") {return("K2")}
# 甲介於4~6间,且乙= M2得到K2
else if (x[1] >= 7 & x[1] <= 9 & x[2] == "M3") {return("K3")}
# 甲介於7~9间,且乙= M3得到K3
else {return(NULL)}
}
}
multiple_judges(X1)
multiple_judges(X2)
multiple_judges(X3)
####
应该可以得到你想要的结果~
※ 引述《hizerg (路过的人)》之铭言:
: [问题类型]:
:
: 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
:
: [软体熟悉度]:
:
: 入门(写过其他程式,只是对语法不熟悉)
:
: [问题叙述]:
: 请简略描述你所要做的事情,或是这个程式的目的
: 多组数值(甲、乙)
: 甲介於1~3间,且乙= M1得到K1
: 甲介於4~6间,且乙= M2得到K2
: 甲介於7~9间,且乙= M3得到K3
: 1.产生资料
: A <- c(1, 3, "M1", "K1")
: B <- c(4, 6, "M2", "K2")
: C <- c(7, 9, "M3", "K3")
: X1 <- c(5, "M1")
: X2 <- c(4, "M2")
: X3 <- c(8, "M3")
: 当X1资料丢进去判断,得到K1
: 当X2资料丢进去判断,得到null
: 当X3资料丢进去判断,得到K3
: 这个用回圈写会比较好?(完全没头绪)
: 谢谢各位前辈
:
: [环境叙述]:
:
: R version 3.3.3 (2017-03-06)
: Windows 7 x64 Service Pack 1
:
: [关键字]:
:
: R语言多重数据判断分类
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.225.139.194
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1489669988.A.D66.html
※ 编辑: clsmbstu (36.225.139.194), 03/16/2017 21:16:27
1F:推 hizerg: 感谢! 不过我的问题主要是 条件大概有将近50组 03/16 22:05
2F:→ hizerg: 需要写变数 所以才思考是不是要用回圈 03/16 22:05
3F:→ hizerg: A B C 只是把其中的三组 简单化写出 03/16 22:06
4F:推 hizerg: 这个写法我也想一下 真的很谢谢愿意给一个思考方向 03/16 22:08
5F:→ clsmbstu: 我的想法跟板主後来的回应有点类似,如果你50个条件都是 03/16 22:38
6F:→ clsmbstu: 像这样的格式,那把它们变成data frame的确方便很多, 03/16 22:39
7F:→ celestialgod: 但这样写是有点糟的方式QQ,完全没有vectorization 03/16 22:39
8F:→ celestialgod: 笔数不用太多就会跑到哭出来 03/16 22:39
9F:→ clsmbstu: 我当时只是想简单问题就简单解决... 03/16 23:14