【问题标题】:Algorithm that gives you any number n in base 3 in R在R中为您提供以3为底的任意数字n的算法
【发布时间】:2018-03-09 05:23:47
【问题描述】:

我需要编写一个算法,在 R 中以 3 为底数为您提供任意数字 n。 到目前为止,我写道:

NameOfTheFunction <- function(n) { while (n != 0) {
{q<- n%/%3}
{r <- n%%3}
{return(r)}
q<- n  } }

我的问题是我现在需要将每个 r 存储在一个向量中。我从来没有这样做过,也不知道如何处理它。我试图在互联网上找到一些东西,但没有找到与这种特殊情况真正相关的任何东西。

【问题讨论】:

  • 你应该在 Stackoverflow 上问这样的问题。不应该吗?

标签: r algorithm


【解决方案1】:

在你的函数之后,使用:

sapply(vector, FUN=function(n) return(NameOfTheFunction(n)))

sapply 所做的是,对于您选择的给定vector,它将重复函数NameOfTheFunction(n),使用向量中的每个元素代替函数中的n。在这种情况下,结果将是向量中每个输出的向量。

例如:

vector <- c(10, 100, 1000, 10000)
NameOfTheFunction <- function(n) { while (n != 0) {
  {q<- n%/%3}
  {r <- n%%3}
  {return(r)}
  q<- n  } }
sapply(vector, NameOfTheFunction)
[1] 1 1 1 1

【讨论】:

  • 非常感谢您的回答,但是当我尝试应用您提供的内容时,它不起作用。我不知道这有什么问题: ternary ternary(10) 当我用 R 写这个时,它只显示最后一个 r (1) 而不是所有的 rs而我需要一个向量,我将拥有所有的 rs。
  • 我已经编辑了我的帖子,向您展示了我使用的确切代码,包括其输出 1 1 1 1。我所做的只是创建一个向量,复制你的函数,然后使用 sapply。您可以重新编辑评论中的代码吗?当评论中包含未格式化时,很难说出您使用了什么。我注意到您缺少两个大括号,例如在q&lt;- n 之后,这会阻止你的函数工作。
  • 为什么不sapply(vector, NameOfTheFunction)
  • 这也有效。我习惯于以类似于上面的方式使用sapply,在这种情况下不会改变功能。我会用你的sapply 版本更新它,只是因为它更简洁
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
  • 2014-09-29
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 2018-03-01
相关资源
最近更新 更多