在R中嵌套if语句

时间:2013-11-20 15:15:55

标签: r

我正在尝试在R中实现以下内容,但我是R的新手,我的代码不起作用。

我有矩阵A,我做了坐标变化。 我想写两个函数: 1)给出矩阵的元素,给定坐标 2)给出坐标给定的数字。 伪代码是对的,唯一的问题是我的语法。有人能纠正吗?

f<- as.numeric(readline(prompt="Please enter 10 to get coordinate of number,and 20 to get the number > "));
if(p==10){
# give the number, given coordinates 
 i<- as.numeric(readline(prompt="Pleae enter i cordinate > "));
 j<- as.numeric(readline(prompt="Pleae enter j cordinate > "));
if (i>0&j<0) return A[5+i,5+j]
if (i>0&j>0) return A[5+i,5+j]
if (i<0&j>0) return A[5+i,5-j]
if (i<0&j<0) return A[5+i,5-j]



 }else if (p==20){
#give the cordinate, given number

coordinate <- which(A==number)
[i,j]<-A[2-coordinate[0],coordinate[1]-2]
}





}

2 个答案:

答案 0 :(得分:1)

警告:如果i或j等于零怎么办?接下来,创建一个单独的变量,它是二进制i,j的十进制表示,即

if(p==10){
x <- (i>0)  + 2*(j>0)  +1 
# x takes on values 1 thru 5. This is because switch requires nonnegative integer

switch(x,
    return A[5+i,5+j],
    return A[5+i,5+j],
    return A[5+i,5+j],
    return A[5+i,5+j])  # change the +/- indices as desired
}else{
#etc.

最后,你应该把它变成一个函数,而不是命令的集合。

编辑 - 之前我已跳过此内容,但是:您无法调用0的索引,因此您需要修改行[i,j]<-A[2-coordinate[0],coordinate[1]-2]

中的一些内容

答案 1 :(得分:0)

语法如下:

x <- 4
if (x == 1 | x == 2) print("YES")