如何在 R 中创建具有特定间隔的向量?

Posted

技术标签:

【中文标题】如何在 R 中创建具有特定间隔的向量?【英文标题】:How do you create vectors with specific intervals in R? 【发布时间】:2013-03-14 03:43:34 【问题描述】:

我有一个关于创建向量的问题。如果我做a <- 1:10,“a”的值是 1,2,3,4,5,6,7,8,9,10。

我的问题是如何创建一个元素之间具有特定间隔的向量。例如,我想创建一个值从 1 到 100 但仅以 5 为间隔计数的向量,以便我得到一个值 5,10,15,20,...,95,100 的向量

我认为在 Matlab 中我们可以做到1:5:100,我们如何使用 R 做到这一点?

我可以尝试做5*(1:20),但有更短的方法吗? (因为在这种情况下,我需要知道整个长度(100),然后除以区间的大小(5)得到 20)

【问题讨论】:

我知道有时很难找到好的搜索词,但如果我用谷歌搜索“r 序列”,第二次点击是seq 的帮助页面。该函数可能也是 R 的最基本介绍的一部分。 是的,我尝试了几件事,但找不到它..我没想到要写“序列”..一直在考虑间隔 【参考方案1】:

在 R 中,等效函数是 seq,您可以将其与选项 by 一起使用:

seq(from = 5, to = 100, by = 5)
# [1]   5  10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95 100

除了by,您还可以有其他选项,例如length.outalong.with

length.out:如果你想得到一共10个0到1之间的数字,例如:

seq(0, 1, length.out = 10)
# gives 10 equally spaced numbers from 0 to 1

along.with:它将您提供的向量的长度作为输入,并提供来自 1:length(input) 的向量。

seq(along.with=c(10,20,30))
# [1] 1 2 3

尽管在这种情况下,建议使用seq_along,而不是使用along.with 选项。来自?seq的文档

seq 是通用的,这里只介绍默认的方法。请注意,无论参数名称如何,它都会在 first 参数的类上调度。如果只使用一个参数来调用它,这可能会产生意想不到的后果。在这种情况下,最好使用seq_along

seq_along:而不是seq(along.with(.))

seq_along(c(10,20,30))
# [1] 1 2 3

希望这会有所帮助。

【讨论】:

【参考方案2】:

使用代码

x = seq(0,100,5) #this means (starting number, ending number, interval)

输出将是

[1]   0   5  10  15  20  25  30  35  40  45  50  55  60  65  70  75
[17]  80  85  90  95 100

【讨论】:

【参考方案3】:

通常,我们希望将向量划分为多个区间。 在这种情况下,您可以使用一个函数,其中 (a) 是一个向量,并且 (b) 是区间数。 (假设您需要 4 个间隔)

a <- 1:10
b <- 4

FunctionIntervalM <- function(a,b) 
  seq(from=min(a), to = max(a), by = (max(a)-min(a))/b)


FunctionIntervalM(a,b)
# 1.00  3.25  5.50  7.75 10.00

因此你有 4 个区间:

1.00 - 3.25 
3.25 - 5.50
5.50 - 7.75
7.75 - 10.00

你也可以使用剪切功能

  cut(a, 4)

# (0.991,3.25] (0.991,3.25] (0.991,3.25] (3.25,5.5]   (3.25,5.5]   (5.5,7.75]  
# (5.5,7.75]   (7.75,10]    (7.75,10]    (7.75,10]   
#Levels: (0.991,3.25] (3.25,5.5] (5.5,7.75] (7.75,10]

【讨论】:

我建议使用length.out = b + 1 而不是更复杂的by = (max(a) - min(a)) / b 确实如此。该函数有助于计算找到区间数(例如 Sturge 规则)

以上是关于如何在 R 中创建具有特定间隔的向量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中创建一个长度为零的数字向量

要创建一开始没有特定维度的类 Vector,请在类中创建一个方法,允许向向量添加维度

在R中创建具有特定迭代的列表

如何在 GBQ 中创建具有特定模式的空表?

如何在Java中创建具有特定结构的XML文件[重复]

如何在r中创建一个具有正态分布的矩阵?