【问题标题】:R, function that turns numeric input into a recycled numeric output bounded by a upper limitR,将数字输入转换为受上限限制的循环数字输出的函数
【发布时间】:2020-07-07 12:27:38
【问题描述】:

如何编写一个函数 f(v, n)(或使用基本 R 函数),该函数将一个数字向量 v 转换为另一个基于 n 的循环因子(没有更好的词)。 例如:

f(v = c(1,2,3,4,5), n = 1) #would yield c(1,2,3,4,5)
f(v = c(1,2,3,4,5), n = 2) #would yield c(1,2,1,2,1)
f(v = c(1,2,3,4,5), n = 3) #would yield c(1,2,3,1,2)
f(v = c(5,4,3,2,1), n = 3) #would yield c(2,1,3,2,1)
f(v = c(3,6), n = 3) #would yield c(3,3)

我得到的最接近的是使用%%

1:5%%3 #giving me: [1] 1 2 0 1 2 - not quite what I want, at least some recycling.

【问题讨论】:

    标签: r vector numeric recycle


    【解决方案1】:

    我们可以创建函数为

    f <- function(x, n) if(n ==1) x else (x - 1) %% n + 1
    f(1:5, 1)
    #[1] 1 2 3 4 5
    f(1:5, 2)
    #[1] 1 2 1 2 1
    
    f(1:5, 3)
    #[1] 1 2 3 1 2
    
    f(5:1, 3)
    #[1] 2 1 3 2 1
    
    f(c(3, 6), 3)
    #[1] 3 3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-14
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 2015-01-28
      相关资源
      最近更新 更多