我有下表:
> head(datalist[[5]])
X5CO X5CS X5CD X5CSD
1 24.87769 24.31233 26.84647 34.3316
2 24.74026 24.31233 26.84647 34.3316
3 24.45217 24.31233 26.84647 34.3316
10 24.87769 24.31233 26.15139 34.3316
11 24.74026 24.31233 26.15139 34.3316
12 24.45217 24.31233 26.15139 34.3316
我需要使用每一行作为变量值来应用以下表达式。所以我正在使用 with() 函数。这适用于 2 个嵌套的 ifelse,但是当我添加第三个 ifelse() 时,它不再起作用了。自己看:
> with( head(datalist[[5]]),{
+ cCO=get(paste("X", 5,"CO",sep=""))
+ cCS=get(paste("X", 5,"CS",sep=""))
+ cCD=get(paste("X", 5,"CD",sep=""))
+ cCSD=get(paste("X", 5,"CSD",sep=""))
+ ifelse( (cCS-cCO) > 0, 1, #1st consequent
+ ifelse ( (cCD-cCO) > 0, 2, # 2nd
+ 5) ) } ) # default
[1] 2 2 2 2 2 2
只有 2 个嵌套循环,结果是 [1] 2 2 2 2 2 2,这就是我想要的。但是,当我添加第三个条件时,它不再起作用:
> with( head(datalist[[5]]),{
+ cCO=get(paste("X", 5,"CO",sep=""))
+ cCS=get(paste("X", 5,"CS",sep=""))
+ cCD=get(paste("X", 5,"CD",sep=""))
+ cCSD=get(paste("X", 5,"CSD",sep=""))
+ ifelse( (cCS-cCO)>0 && (cCD-cCO) > 0, 3, #1st consequent
+ ifelse( (cCS-cCO) > 0, 1, #2nd consequent
+ ifelse ( (cCD-cCO) > 0, 2, # 3rd
+ 5) ) ) } ) # default
[1] 2
为什么要这样做?