【发布时间】:2019-06-16 15:09:36
【问题描述】:
我有一个巨大的 data.frame 想要重新排序。想法是将其分成两半(因为前半部分包含与后半部分不同的信息)并创建第三个数据框,该数据框将是两者的组合。因为我总是需要第一个数据帧的前两列,然后是第二个数据帧的前两列,所以我需要帮助。
new1<-all_cont_video_algo[,1:826]
new2<-all_cont_video_algo[,827:length(all_cont_video_algo)]
df3<-data.frame()
新的数据框应该如下所示:
new3[new1[1],new1[2],new2[1],new2[2],new1[3],new1[4],new2[3],new2[4],new1[5],新1[6]、新2[5]、新2[6]等]。
伪算法,从数据框 new1 中 cbind 2 列,然后从数据框 new2 中 cbind 2 列,等等。
我现在尝试了以下方法(感谢 Akrun):
new1<-all_cont_video_algo[,1:826]
new2<-all_cont_video_algo[,827:length(all_cont_video_algo)]
new1<-as.data.frame(new1, stringsAsFactors =FALSE)
new2<-as.data.frame(new2, stringsAsFactors =FALSE)
df3<-data.frame()
f1 <- function(Ncol, n) {
as.integer(gl(Ncol, n, Ncol))
}
lst1 <- split.default(new1, f1(ncol(new1), 2))
lst2 <- split.default(new2, f1(ncol(new2), 2))
lst3 <- Map(function(x, y) df3[unlist(cbind(x, y))], lst1, lst2)
但是,给我一个“未定义的列选择错误”。
【问题讨论】:
-
当您创建数据集
df1<-data.frame(c(1,2,3,4,5,6,7,8))时,它是单列数据集,而不是多列。请检查输出 -
该示例可能具有误导性。添加 df1 和 df2 是为了了解两个数据帧的列应如何在 df3 中表示。很抱歉,它确实使人感到困惑而不是帮助。
-
如果是这样,你有没有试过我的解决方案。它应该可以工作,假设字符列不是
factor -
它有效。现在我有一个长的单列向量,现在有更多的列名;)
-
您需要多个数据集吗?在这种情况下不要使用
unlist,使用Map(function(x, y) df3[c(cbind(x, y))], lst1, lst2)
标签: r