我正在尝试在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]
}
}
答案 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")