我可以在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