我有一个像这样的数据框:
A<-c(1,2,3,4,5)
B<-c(5,6,5,4,3)
C<-c(6,6,6,6,6)
D<-c(3,3,2,4,5)
E<-c(7,6,5,4,3)
DF<-data.frame(A,B,C,D,E)
我也有个别的载体:
AA<-c(8,8,8,8,8)
BB<-c(1,2,3,4,5)
CC<-c(4,4,4,4,3)
DD<-c(2,2,2,2,3)
EE<-c(7,7,7,7,6)
我的目标是通过引用上面的名称来创建一个新的数据框。我有一个循环函数,它创建了我希望如何组织数据框的列表。结果如下:
mylist<-list('DF$A','AA','DF$B','BB','DF$C','CC','DF$D','DD','DF$E','EE')
如何根据以上列表创建新数据框?
类似于此的东西:
MyDataFrame<-data.frame(mylist)
这显然不起作用。但是会产生与此相同结果的东西:
MyDataFram<-data.frame(DF$A, AA,DF$B,BB,DF$C,CC,DF$D,DD,DF$E,EE)
无需指定每个术语
答案 0 :(得分:0)
这个例子可能有帮助
a<-c(4,4,4,4,3) #data 1
b<-c(2,2,2,2,3) #data 2
l<-list(a=a,b=b) #make list (I assume you already have this organized)
#depend on how you want to compile your data use either 'rbind' or 'cbind'
d<-data.frame(do.call('rbind',l))
> d
X1 X2 X3 X4 X5
a 4 4 4 4 3
b 2 2 2 2 3
d<-data.frame(do.call('cbind',l))
> d
a b
1 4 2
2 4 2
3 4 2
4 4 2
5 3 3
答案 1 :(得分:0)
考虑# CREATE A DATAFRAME OF SEPARATE VECTORS
otherDF <- data.frame(AA, BB, CC, DD, EE)
# VECTOR OUTPUT OF COLUMN NAMES
nms <- mapply(c, names(DF), names(otherDF))
# LIST OUTPUT OF DATAFRAMES
dfs <- mapply(function(x,y) data.frame(cbind(x,y)), DF, otherDF, SIMPLIFY = FALSE)
# dfs <- Map(function(x,y) data.frame(cbind(x,y)), DF, otherDF) # EQUIVALENT CALL
# COMBINED DATAFRAME
df <- setNames(do.call(cbind, dfs), nms)
df
# A AA B BB C CC D DD E EE
# 1 1 8 5 1 6 4 3 2 7 7
# 2 2 8 6 2 6 4 3 2 6 7
# 3 3 8 5 3 6 4 2 2 5 7
# 4 4 8 4 4 6 4 4 2 4 7
# 5 5 8 3 5 6 3 5 3 3 6
在两个数据帧中逐列绑定:
DataGridView
答案 2 :(得分:0)
as.data.frame
的 col.names = names_df
刚刚传递了带有向量名称的列表。您只需要将点更改为_
或其他字符或只是&#34 ;掩模&#34; $
标志。希望它有所帮助,是您寻找的答案。
##this info:S3 method for class 'list'
as.data.frame(x, row.names = NULL, optional = FALSE, ...,
cut.names = FALSE, col.names = names(x), fix.empty.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
https://stat.ethz.ch/R-manual/R-devel/library/base/html/as.data.frame.html
A<-c(1,2,3,4,5)
B<-c(5,6,5,4,3)
C<-c(6,6,6,6,6)
D<-c(3,3,2,4,5)
E<-c(7,6,5,4,3)
DF<-data.frame(A,B,C,D,E)
DF
AA<-c(8,8,8,8,8)
BB<-c(1,2,3,4,5)
CC<-c(4,4,4,4,3)
DD<-c(2,2,2,2,3)
EE<-c(7,7,7,7,6)
names_df <- c('DF$A','AA','DF$B','BB','DF$C','CC','DF$D','DD','DF$E','EE')
str(names_df)
mylist<-list( DF$A ,AA,DF$B,BB,DF$C,CC,DF$D,DD,DF$E,EE)
str(mylist)
df <- as.data.frame(mylist, col.names = names_df)
df