2017-11-10 55 views
1

我想在我的test_replica地圖矢量陣列...如何在地圖上的複製數據幀

test <- data.frame(a = LETTERS[1:2], b = letters[1:2]) 
test_replica <- do.call("rbind", replicate(3, test, simplify = F)) 
vector_to_map <- c("10:10", "10:11", "10:12") 

纔能有以下結果:

vector_to_map a b 
1   10:10 A a 
2   10:10 B b 
3   10:11 A a 
4   10:11 B b 
5   10:12 A a 
6   10:12 B b 
+2

你可以試試'test_replica $ vector_to_map < - rep(vector_to_map,each = 2)'?很難提供更好的答案,因爲預期的用途不明(至少對我而言) –

+0

要清楚,你希望用三個時間看字符串來掩蓋「角色」向量,對嗎?如果你認爲你需要迭代10到10,然後10到11,...的整數向量,那麼這是一個稍微不同的問題(我建議使用字符串可能不是最好的方法來處理它)。也許你可以給你一個關於你打算如何使用它的背景。 – r2evans

+0

@Mike H.非常感謝.. rep(..,each = x)是我正在尋找的.. !! – Codutie

回答

1

對我的評論跟進,你可以簡單地做:

test_replica$vector_to_map <- rep(vector_to_map, each = 2) 

# a b vector_to_map 
#1 A a   10:10 
#2 B b   10:10 
#3 A a   10:11 
#4 B b   10:11 
#5 A a   10:12 
#6 B b   10:12 

或者更一般地,如果你的vector_to_map的長度是行的倍數test_replica你可以這樣做:

test_replica$vector_to_map <- rep(vector_to_map, each = nrow(test_replica)/length(vector_to_map)) 
0

我想創建一個列我的「矢量映射」矢量並將其綁定到data.frame。有在性能上優於rbinding一起:

test <- data.frame(a = LETTERS[1:2], b = letters[1:2]) 
test_replica <- do.call("rbind", replicate(3, test, simplify = F)) 

x1 <- c(10,10,10) 
x2 <- c(10,11,12) 

vector_to_map <- paste(rep(x1, each=2), rep(x2, each = 2), sep = ":") 

(test_replica <- cbind(vector_to_map, test_replica)) 

## vector_to_map a b 
## 1   10:10 A a 
## 2   10:10 B b 
## 3   10:11 A a 
## 4   10:11 B b 
## 5   10:12 A a 
## 6   10:12 B b