参考值在矩阵中

时间:2014-08-17 08:42:08

标签: r

我正在尝试创建一个带有数字向量的函数,并且对于每个数字检查数字是否相同颠倒,返回逻辑真假。

颠倒我的意思是,例如如果你拿96,那么颠倒的数字是96,并且是真的。

到目前为止,我已经创建了一个值为0:9的矩阵和'fipped'数字的对应值,0,1,6,9,其他为NA。

numbers = (0:9)
upside_down_numbers = c(0,1,NA,NA,NA,NA,9,NA,8,6)
ref_table = rbind(numbers,upside_down_numbers)

使用for循环,我可以将每个输入数字拆分为数字

input = c(241234,432,123)

for (number in input){
digits = as.integer(substring(number, seq(nchar(number)), seq(nchar(number))))
print(digits)
}

我现在的问题是将每个数字与矩阵进行比较以获得预期的倒置数字,因为一旦我得到了,我可以折叠然后反转新数字并与输入数字进行比较,并获得逻辑结果。

因此,在矩阵中查找值时,或者如果有另一种方法可以让我实现函数的目的,那么任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

由于您的查询只是从0到9,所以您只需要添加一个并将索引添加到upside_down_numbers

> upside_down_numbers[6+1]
[1] 9
> upside_down_numbers[1+1]
[1] 1

不是颠倒了2 a 2而是颠倒了5 a 5?

哦,您可以使用strsplit更轻松地进行字符串拆分:

> as.numeric(strsplit(as.character(6973),"")[[1]])
[1] 6 9 7 3

如果数字包含非可倒置的数字,那么这是一个返回上行数字或NA的单行:

> udnum = function(n){
   as.numeric(paste0(
        upside_down_numbers[
          1+rev(as.numeric(strsplit(as.character(n),"")[[1]]))
          ],collapse=""))}


> udnum(2669)
[1] 6992
> udnum(5526)
[1] 9255
> udnum(4)
[1] NA
Warning message:
In udnum(4) : NAs introduced by coercion

我已经使用了我的修改过的反转表,其中包含2和5。这就是我的计算器的样子!