我可以在data.frame
中插入vector
作爲一行嗎?如果是這樣如何?R:在data.frame中插入一個向量作爲一行
19
A
回答
11
我不會聲稱這是最優雅和漂亮的解決方案,但它完成了工作。 請注意,每個數據幀行都有自己的行名,這在插入新行時會成爲問題。這就是說,你可以通過row.names
來修補這個(見下文)。
my.df <- data.frame(a = runif(10), b = runif(10), c = runif(10))
my.vec <- c(1, 1, 1)
new.df <- rbind(my.df[1:5, ], my.vec, my.df[6:nrow(my.df), ])
new.df
a b c
1 0.45433791 0.3798105 0.84514864
2 0.07074529 0.4985765 0.53912585
3 0.09645574 0.5441647 0.96636213
4 0.60788436 0.6070706 0.53791603
5 0.01593911 0.1697248 0.62697924
6 1.00000000 1.0000000 1.00000000
61 0.98455694 0.2206702 0.85500531
7 0.85356834 0.5279596 0.27462326
8 0.48028935 0.6689572 0.05428349
9 0.95675901 0.6875491 0.77642924
10 0.24691330 0.7980741 0.24013096
row.names(new.df) <- 1:nrow(new.df) # make row names pretty again
1
製作的R數據幀從向量,水平
的關鍵洞察力是使用R轉方法:t(...)
轉置向量將它傳遞給data.frame
構造函數之前。
my_name_vector = c("penguin1", "penguin2", "penguin3", "penguin4");
my_data_vector = c("Skipper", "Kowalski", "Rico", "Private");
supplemental_vector = c("Mumble", "Dorthy", "Norma", "Memphis");
#create a data frame out of a transposed vector
penguins = as.data.frame(t(my_data_vector));
#change the names of the dataframe to be the titles
colnames(penguins) <- my_name_vector;
supplemental_data_frame <- data.frame(t(supplemental_vector));
colnames(supplemental_data_frame) <- my_name_vector;
supplemental_data_frame;
#rbind means row bind, pass in two data.frame
penguins <- rbind(penguins, supplemental_data_frame);
penguins;
打印:
penguin1 penguin2 penguin3 penguin4
1 Mumble Dorthy Norma Memphis
penguin1 penguin2 penguin3 penguin4
1 Skipper Kowalski Rico Private
2 Mumble Dorthy Norma Memphis
的rbind方法是非常低效的,所以如果你正在做超過幾百行,則此多,預計要等很長的時間。如果您需要快速閃電,那麼您需要預先分配空間或使用列表方法,如下所示:https://stackoverflow.com/a/20689857/445131
1
rbind
雖然很好,但真正棘手的是要處理前後的確切行號。更快速的方法是在包miscTools
中使用insertRow
。
在上面的數據集示例中,代碼將是:
my.df <- as.matrix(data.frame(a = runif(10), b = runif(10), c = runif(10)))
my.vec <- c(1, 1, 1)
new.df <- insertRow(my.df,7,my.vec)
new.df
希望將是有益的。
+0
這比rbind好多了!謝謝! – Rodrigo 2018-03-03 07:09:14
相關問題
- 1. R:子集data.frame由另一個向量
- 2. R:在一個向量中的一個值後命名一個data.frame
- 3. R:一個data.frame
- 4. 如何從data.frame中將每個列作爲data.frame(而不是一個向量)?
- 5. 如何從R中的data.frame列中創建一個向量?
- 6. 在2dim向量中插入一個值?
- 7. R將data.frame的一列更改爲二進制向量
- 8. 從R到Mongodb插入data.frame
- 9. data.frame在一個循環中 - R
- 10. data.frame值作爲R
- 11. 一個R函數我data.frame
- 12. 從單維data.frame刪除行並保留它作爲一個data.frame
- 13. 把矢量作爲子矢量到另一個向量R
- 14. 的R - 爲了一個data.frame按列名作爲字符
- 15. 在R中創建一個向量
- 16. 在R中的data.frame中添加一列在另一個下面
- 17. 的R - 爲每一個字符向量
- 18. 將一個向量拆分爲R塊
- 19. 車削一個data.frame與R中
- 20. 將各種長度的字符向量列表轉換爲一列data.frame中R
- 21. 爲什麼R找到不在data.frame中的data.frame變量?
- 22. 如何將一個向量插入intent.extra?
- 23. 基於一個data.frame和另一個條件中的值返回一個向量
- 24. 在R中的一個條件乘以另一個data.frame中列的一個data.frame中的列值
- 25. 在XQuery中插入一個查詢變量作爲屬性
- 26. cbind同樣名爲向量在列表中的多個data.frames到一個data.frame
- 27. R:在大data.frame行
- 28. 在R中,如何使用另一個data.frame的一列中的唯一值創建一個data.frame?
- 29. 將data.frame列設置爲一個用於創建confint的向量
- 30. 如何在Mysql中將多行作爲一行插入到另一個表中
你可以在'rbind'中用參數'make.row.names = FALSE'來做行名 – 2017-03-05 04:03:58