【问题标题】:Converting dataframe to dataframe in R? Unexpected results在R中将数据框转换为数据框?意想不到的结果
【发布时间】:2015-05-01 06:32:37
【问题描述】:

我需要在我正在运行的某个文件中同时进行多次转换。 我不明白为什么转换两次会导致不同的输出。

给定

x = c(140,190,190,185,195,195,195,130,150,125,50,30,15,45,55)
y = c(150,195,190,190,190,200,195,140,30,20,125,25,45,65,70)

这个,

locs <- data.frame(x=x,y=y)

...按预期工作,有两列名为 x 和 y。但是,如果我执行以下操作

locs <- as.data.frame(x=x,y=y)

它只给出一列命名 x,但具有y。为什么是这样?这对于我正在运行的较大文件很重要——我可能不得不改变我的整个方法。

【问题讨论】:

  • 阅读?as.data.frame?data.frame 怎么样?它们是两种不同的功能,做两种不同的事情。它们不能互换使用。在您的第二行中,我得到一列带有 x 值的列,完全符合预期(再次阅读文档!)。
  • 你没有说你使用的是哪个版本的 R。使用 R-3.2.0 并使用 as.data.frame(x=x,y=y),我得到列“x”,其值来自向量“x”。无论如何,您不尊重as.data.frame 的语法,即第一个参数是要强制转换为 data.frame 的 R 对象,第二个参数是行名。就我而言,y=y 似乎只是被忽略了。

标签: r dataframe type-conversion


【解决方案1】:

data.frame... 开头,通常填充有“标签/值”对以组合为列。因此,data.frame(x = x, y = y) 将按您的预期工作。

as.data.frame 需要一个可以使用as.data.frame.* 方法之一强制转换为data.frame 的对象。它还有一个... 参数,但它用于将参数传递给不同的as.data.frame 方法。

换句话说,如果你有一个matrix (m &lt;- cbind(x, y)),你可以使用as.data.frame(m) 并得到你期望的结果,但如果你从向量开始,你还不如只做data.frame(x, y) .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 2021-11-30
    • 2017-11-22
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多