我有一个关于cbinding回收物品的问题。我将我的问题简化为以下代码。
我有两个对象“a”和“b”。 “a”有5行,“b”有10行。
当我找到它们时,我得到一个包含10行的data.frame,我的列“a”循环使用,直到达到10行。我的问题是,如何回收值,以便增加长度(a)。谢谢!
a <- c(4, 3, 5, 2, 8)
b <- c(1:10)
cbind(a,b)
a b
1 4 1
2 3 2
3 5 3
4 2 4
5 8 5
6 4 6
7 3 7
8 5 8
9 2 9
10 8 10
What I want to do: a[6] = a[5] + 4, a[7] = a[5] + 5, ... a[10] = a[5] + 8
a b
1 4 1
2 3 2
3 5 3
4 2 4
5 8 5
6 12 6
7 11 7
8 13 8
9 10 9
10 16 10
答案 0 :(得分:1)
a <- c(4, 3, 5, 2, 8)
b <- c(1:11)
counter <-0:floor(length(b)-1)/length(a))
new.col <- rep(a[length(a)] * counter, each = length(a)) + a
length(new.col) <- length(b)
new.col
[1] 4 3 5 2 8 12 11 13 10 16
第一个长度(a)项目保持不变,我们将[5]添加到下一个长度(a)项目,2 * a [5]到下一个长度(a)项目等等......