2016-08-22 106 views
-1

重疊對所以我獲得來自特徵向量

xx = c("AAA", "ABC", "CBS") 
xx 
length(nchar(xx)) 

我試圖讓我的每個字符串中的向量對二分裂了這一點,以下特徵向量。在上面的例子中,它會看起來像一個數據幀,其中:

AAA ABC 
ABC CBS 

我一直在試圖避免環路我的數據會很大。

split(xx, 2) 
split(xx, cut(seq_along(xx), 2, labels = FALSE)) 
split(xx, cut(seq_along(xx), 2, labels = FALSE))[[1]] 
split(xx, cut(seq_along(xx[-1]), 2, labels = FALSE))[[1]] 

對避免for循環的解決方案的任何建議。

隨着五個條目:

xx = c("AAA", "ABC", "CBS", "BBB", "GGG") 
xx 

AAA ABC 
ABC CBS 
CBS BBB 
BBB GGG 
+0

它應該是xx [1]和xx [2]。然後xx [2]和xx [3]。這是事件的順序,所以在這種情況下不需要xx [1]和xx [3]。 – AGUY

+0

那麼,如果我們擴展到'xx'有5個條目應該如何? – bouncyball

+1

'embed(xx,2)[,2:1]'? – Frank

回答

1

隨着dplyrtidyr

xx = c("AAA", "ABC", "CBS", "BBB", "GGG") 

library(dplyr) 
df <- data.frame(col1 = xx) %>% 
    mutate(col2 = lead(col1)) %>% 
    tidyr::drop_na() 

輸出

# col1 col2 
# 1 AAA ABC 
# 2 ABC CBS 
# 3 CBS BBB 
# 4 BBB GGG 
1

我們可以使用data.table

library(data.table) 
na.omit(as.data.table(xx)[, xx1 := shift(xx, type = "lead")]) 
# xx xx1 
#1: AAA ABC 
#2: ABC CBS 
#3: CBS BBB 
#4: BBB GGG