2012-10-02 29 views
0

我合併幾個data.frame s的在R. rbind我想要輸出之間的各休息data.frame諸如與data.frame秒之間只有「#」字符一個新行。包括間隙合併的數據幀時具有rbind

請讓我知道如果/如何這是可能的。

+1

'rbind'ing的要點是讓它成爲一個連續的數據塊。如果你想保留的東西分開,你是收集所有的data.frames中的好'list' – James

+0

OK謝謝我會研究 – user964689

+1

什麼是你的目標嗎?我想我們可以幫助你,如果你向我們提供更多關於你想要做的事情的信息。 –

回答

0

我真的不知道爲什麼有人想做到這一點,除了目視間隔。如果是這樣的話,也許你可以使用類似這樣的函數(但請注意,輸出不是真正的功能)。

hashbind <- function(..., hash = "#") { 
    lst <- list(...) 
    Nchar <- max(rapply(lst, function(y) nchar(as.character(y)))) + 2 
    do.call(
    rbind, 
    lapply(lst, function(x) { 
     rbind(x, substr(paste(rep(hash, Nchar), collapse = ""), 1, Nchar)) 
    })) 
} 

讓我們嘗試一下一些data.frame S:

d1 <- data.frame(A = 1:2, B = 3:4) 
d2 <- data.frame(A = 5:6, B = 7:8) 
d3 <- data.frame(A = 1:10, B = 11:20) 

hashbind(d1, d2, d3) 
#  A B 
# 1  1 3 
# 2  2 4 
# 3 #### #### 
# 4  5 7 
# 5  6 8 
# 6 #### #### 
# 7  1 11 
# 8  2 12 
# 9  3 13 
# 10 4 14 
# 11 5 15 
# 12 6 16 
# 13 7 17 
# 14 8 18 
# 15 9 19 
# 16 10 20 
# 17 #### #### 

和一些矩陣:

m1 <- matrix(1:4, ncol = 2) 
m2 <- matrix(5:8, ncol = 2) 
m3 <- matrix(1:20, ncol = 2) 

hashbind(m1, m2, m3) 
#  [,1] [,2] 
# [1,] "1" "3" 
# [2,] "2" "4" 
# [3,] "####" "####" 
# [4,] "5" "7" 
# [5,] "6" "8" 
# [6,] "####" "####" 
# [7,] "1" "11" 
# [8,] "2" "12" 
# [9,] "3" "13" 
# [10,] "4" "14" 
# [11,] "5" "15" 
# [12,] "6" "16" 
# [13,] "7" "17" 
# [14,] "8" "18" 
# [15,] "9" "19" 
# [16,] "10" "20" 
# [17,] "####" "####" 

視覺分離器可自定義的:

hashbind(d1, d2, d3, hash = "-") 
#  A B 
# 1  1 3 
# 2  2 4 
# 3 ---- ---- 
# 4  5 7 
# 5  6 8 
# 6 ---- ---- 
# 7  1 11 
# 8  2 12 
# 9  3 13 
# 10 4 14 
# 11 5 15 
# 12 6 16 
# 13 7 17 
# 14 8 18 
# 15 9 19 
# 16 10 20 
# 17 ---- ---- 

當然,類似的(但不相同)的方法可以通過只使用by打印方法來實現。例如,請查看以下輸出:

print.by(list(m1, d2, d3)) 
相關問題