【问题标题】:R extract data frame from list without prefixes in column namesR从列表中提取数据框,列名中没有前缀
【发布时间】:2013-03-14 01:51:32
【问题描述】:

我在列表中放置了一个数据框。然后,当尝试将其提取回来时 - 我得到了所有以该数据框的列表键为前缀的列名,有没有办法完全按照最初传递的方式提取数据框?

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

获取结果(列名以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

当然,我可以手动删除前缀,但可能有一种正确的方法可以做到这一点。 谢谢!

【问题讨论】:

    标签: r list dataframe columnname


    【解决方案1】:

    使用[[ 而不是[ 提取:

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

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

    但由于df1 已经一个数据框,为什么不直接这样做:

    newdf1 <- result[['df1']]
    

    ?您不需要 as.data.frame() 部分。

    【讨论】:

    • 很好,在这种情况下,我什至不需要类型转换 as.data.frame() 因为它已经返回了 data.frame。谢谢
    • @Volder 是的,我刚刚添加了那个。很高兴它有帮助。
    猜你喜欢
    • 2015-11-21
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2021-11-27
    相关资源
    最近更新 更多