2013-10-25 16 views
1

我有兩個載體:插入交替載體引入數據幀

a <- c(ceiling(seq(0, top, length.out = 20))) 

b <- c(floor(seq(100, bottom, length.out = 20))) 

a : 1 2 2 2 3 3 3 4 4 4 5 5 5 ..... 

b : 100 98 96 95 93 91 90 88 86 85 83 82 ..... 

我想通過交替矢量項目,並增加一個額外的變量來創建的數據幀。 1表示矢量a分量,-1表示矢量b分量。

number sign 
1  1 
100 -1 
2  1 
98 -1 

等...

如果一個向量是長於其他(如果沒有更多的交替可能),其剩餘的值在數據幀的結尾加入。 我有這樣的事情:

for (n in [1:length(a)]) { 
dataframe[nrow(dataframe)+1,] <- c(a[n],1) 
dataframe[nrow(dataframe)+1,] <- c(b[n],-1) 
} 

這只是從每個矢量相加的第一個值,並返回: 錯誤:意外「}」在「}」

我不知所措我在這裏.. 幫助非常感謝。謝謝!

+2

頂部和底部等於什麼? –

+0

@ SimonO101它取決於每個迭代,但在這裏作爲一個例子,頂部是8,底部是72我認爲 – Julia

+0

如果你指定了一個'length.out'值,一個向量如何比另一個長?我懷疑你沒有充分描述你想解決的問題。 – A5C1D2H2I1M1N2O1R2T1

回答

5

只需使用rbindcbindas.vector

a <- c(ceiling(seq(0, 5, length.out = 10))) 
b <- c(floor(seq(100, 5, length.out = 10))) 
a 
# [1] 0 1 2 2 3 3 4 4 5 5 
b 
# [1] 100 89 78 68 57 47 36 26 15 5 
cbind(as.vector(rbind(a, b)), c(1, -1)) 
#  [,1] [,2] 
# [1,] 0 1 
# [2,] 100 -1 
# [3,] 1 1 
# [4,] 89 -1 
# [5,] 2 1 
# [6,] 78 -1 
# [7,] 2 1 
# [8,] 68 -1 
# [9,] 3 1 
# [10,] 57 -1 
# [11,] 3 1 
# [12,] 47 -1 
# [13,] 4 1 
# [14,] 36 -1 
# [15,] 4 1 
# [16,] 26 -1 
# [17,] 5 1 
# [18,] 15 -1 
# [19,] 5 1 
# [20,] 5 -1 

## Or, if you want a data.frame 
## data.frame(A = as.vector(rbind(a, b)), B = c(1, -1)) 
0

我想你想創建d2[,v1]什麼 -

a <- sample(0:49, 10) 
b <- sample(50:100, 20) 

adf <- data.frame(
v1 = a, 
v2 = 1:length(a), 
v3 = 1 
) 
bdf <- data.frame(
v1 = b, 
v2 = 1:length(b), 
v3 = -1 
) 

d <- rbind(adf,bdf) 
d2 <- d[with(d,order(v2,v3)),] 

輸出:

> d2 
    v1 v2 v3 
11 93 1 -1 
1 31 1 1 
12 70 2 -1 
2 29 2 1 
13 72 3 -1 
3 1 3 1 
14 77 4 -1 
4 28 4 1 
15 57 5 -1 
5 16 5 1 
16 66 6 -1 
6 5 6 1 
17 91 7 -1 
7 11 7 1 
18 73 8 -1 
8 3 8 1 
19 60 9 -1 
9 23 9 1 
20 67 10 -1 
10 43 10 1 
21 88 11 -1 
22 97 12 -1 
23 80 13 -1 
24 52 14 -1 
25 63 15 -1 
26 86 16 -1 
27 51 17 -1 
28 89 18 -1 
29 84 19 -1 
30 55 20 -1