R从列表中提取没有前缀的数据帧

Vol*_*der 8 r list columnname dataframe

我在列表中放置了一个数据框.然后当尝试将其提取回来时 - 我得到所有列名称都以此数据框的列表键为前缀,有没有办法提取数据帧与最初传递完全一样?

cols<-c("column1", "Column2", "Column3")
df1<-data.frame(matrix(ncol = 3, nrow = 1))
colnames(df1)<-cols
df1

result<-list()
result['df1']<-list(df1)

newdf1<-as.data.frame(result['df1'])
newdf1
Run Code Online (Sandbox Code Playgroud)

得到结果(列名以df1为前缀):

> cols<-c("column1", "Column2", "Column3")
> df1<-data.frame(matrix(ncol = 3, nrow = 1))
> colnames(df1)<-cols
> df1
  column1 Column2 Column3
1      NA      NA      NA
> 
> result<-list()
> result['df1']<-list(df1)
> 
> newdf1<-as.data.frame(result['df1'])
> newdf1
  df1.column1 df1.Column2 df1.Column3
1          NA          NA          NA
Run Code Online (Sandbox Code Playgroud)

当然,我可以手动删除前缀,但可能有一个正确的方法来执行此操作.谢谢!

Rei*_*son 17

使用提取[[而不是[:

> newdf1 <- as.data.frame(result[['df1']])
> newdf1
  column1 Column2 Column3
1      NA      NA      NA
Run Code Online (Sandbox Code Playgroud)

不同之处在于[提取包含所请求组件的列表.[[直接提取所请求的组件(即,它检索列表中该组件的内容,而不是包含该组件的列表).

但是,由于数据框架df1已经存在,为什么不这样做:

newdf1 <- result[['df1']]
Run Code Online (Sandbox Code Playgroud)

?你不需要这个as.data.frame()部分.