【问题标题】:R: Checking variable typesR:检查变量类型
【发布时间】:2017-02-19 15:15:34
【问题描述】:

我对 R 很陌生,我目前正在尝试编写一个具有一些防呆功能的代码。

例如,我有一个函数,假设它需要 (n,c,l) 其中变量应该是数字、字符和逻辑类型。

有没有办法让我检查这些东西? 例如,我尝试过is.integer(3) ...这会返回 FALSE。

理想情况下,我正在寻找例如,假设 abc() 是一些函数,它将测试 l==T 或 l==F (检查是否输入了正确的逻辑。 那么:abc(T) 给出 TRUE,abc(2) 给出 FALSE。

还有没有办法检查 n 是否是一个整数?我的意思是我可以检查 if (n%%1==0),但是有没有特定的功能呢?

提前感谢您提出的看似非常基本的问题。

【问题讨论】:

  • 比较is.integer(3)is.integer(3L)
  • 3 不是整数,而是双精度数。在 R 中,3L 是 3 的整数表示。您可以使用 is.numeric(),因为它对整数和双精度都返回 TRUE,因为它们都是数字。
  • @RichardScriven 和 Pascal 谢谢,然后我需要研究这些差异。感谢您对“双重”的提醒,当我学习 C.is.logical 按预期工作时,它就隐藏在我的记忆中,就像 is.character 一样。我将使用我的模数技巧进行小数检查。

标签: r


【解决方案1】:

按照 cmets 的建议,您可以使用

is.numeric(3)#check whether numeric
is.integer(3L)#check whether integer
is.logical(TRUE)#Check whether logical
is.logical(2)#will return false
is.character("abc")#check whether character
is.character(4)#will return false

同样,您可以检查 R 中的其他数据类型。希望这对您有所帮助。

【讨论】:

  • 如果我们学究气,不要使用T,使用TRUE
  • @thelatemail 不迂腐。这是一个经常被遗忘的重要点。
  • @KumarManglam 谢谢你的回答,不幸的是我在其他堆栈中的声誉没有延续,所以我暂时无法投票给任何人的答案。
猜你喜欢
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 2011-04-12
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多