我试图创建向量:1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9使用rep
和seq
函数
到目前为止,我有:
rep(seq(1,5),5)
这将产生:
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
我一辈子都搞不懂如何递增地添加1。
我尝试了rep(seq(1,5),5,1)
和rep(seq(1,5),5,每个1
和许多其他变体。
是否需要for循环?
这将是一个分而治之的例子。所以你基本上想建立一个1-5,2-6,3-7,4-8,5-9的序列。这里的模式是i-(i 4)。
因此,这里有一个解决方案:
unlist(lapply(1:5, function(i) seq(i, i+4)))
执行i=1-5的子模式。结果是一个列表,因此你把它取消,把你归结为一个简单的
[1] 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
编辑:是的,您确实需要一个“循环”,但这清楚地表明,在R中,可以使用*apply
函数(sapply
,lappy
,apply
,mapply
)执行许多循环操作。
在这种情况下,我们对不同的值执行相同的函数,这就是为什么使用sapply
更容易的原因。如果您有一个依赖于以前的值或行的计算,那么传统的循环是一种方法。
这里,您的函数是seq(i,i4)。当它如此简单时,我们不需要麻烦将其分配给名称,而是创建了一个“lambda函数”或“匿名”函数。完全相同的结果可以通过以下方式实现:
sequence_1_to_4 <- function(i) {
seq(i, i+4)
}
sequences <- lapply(1:5, sequence_1_to_4)
single_sequence <- unlist(sequences)
查看序列
:
sequence(nvec = rep(5L, 5L), from = 1:5)
[1] 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
注:R4.0.0中引入了from
参数。从R新闻4.0.0:
sequence()
[…]从]获取参数[例如,以生成更复杂的序列。
利用R的回收矢量特征:
1:5 + rep(0:4, each = 5)
# [1] 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
请注意,1:5
给出了与seq(1,5)
相同的结果。
我需要在R中执行以下操作:我有一个数字(N),例如
我正在为即将到来的期末考试做一个练习测试,这是其中一个问题: 使用和函数创建以下向量: X=-7, -7, -7, 0, 7, 7, 14, 14, 14, 14 我不知道如何创建这种模式。以下是迄今为止我所拥有的,但我不确定这是实现它的最优雅的方式: 任何建议将不胜感激!
我想创建序列,如果可能的话,只使用和'seq'。所以每次重复我都希望重复序列增加1。这可以通过创建然后添加一个向量来实现。 但是有没有办法在不创建新向量并将其添加到第一个向量的情况下实现这一点?
有人知道怎么做吗?如有任何帮助,不胜感激 问候,
谈到R编码,我目前有点墨守成规。我一直在尝试使用mutate、seq和rep函数来生成一个新列,该列迭代多个列值和不同的条件,但结果并不正确。下面是我的一些数据片段: 我希望按类型和特征 ID 对 lipidName 进行分组,然后查看类型特征 ID2,而不是不正确的数据表。如果它们具有相同的类型和特征 ID,则将它们计为脂质名称的相同脂质。如果它们具有相同的类型和特征ID2,则将它们计为脂质名称
问题内容: 如何在Java中创建20个随机字节的数组? 问题答案: 尝试方法: