-2

我有一个关于 cbinding 回收物品的问题。我将我的问题简化为以下代码。

我有两个对象“a”和“b”。“a”有 5 行,“b”有 10 行。

当我 cbind 时,我得到一个有 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
4

1 回答 1

1

你是这个意思吗?我有 5 个项目,我将 a[5] 添加到接下来的 5 个项目,将 2*a[5] 添加到接下来的 5 个项目,依此类推。

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

第一个 length(a) 项保持不变,我们将 a[5] 添加到下一个 length(a) 项,将 2*a[5] 添加到下一个 length(a) 项,依此类推...

于 2015-02-28T17:11:29.990 回答