将数据帧转换为R中的数据帧?出乎意料的结果

时间:2015-05-01 06:32:37

标签: r dataframe type-conversion

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

给出

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 。为什么是这样?对于我正在运行的较大文件非常重要 - 我可能不得不改变整个方法。

1 个答案:

答案 0 :(得分:1)

data.frame...开头,data.frame(x = x, y = y)通常填充“tag / value”对以组合为列。因此,as.data.frame可以按预期工作。

data.frame期望使用as.data.frame.*方法之一将单个对象强制转换为...。它还有一个as.data.frame参数,但这用于将参数传递给不同的matrix方法。

换句话说,如果您有m <- cbind(x, y)as.data.frame(m)),则可以使用data.frame(x, y)并获得预期的结果,但如果您从向量开始,则可能好吧,只做string xml = "<Request><Person xmlns='http://CompanyName.AppName.version1' uniqueID='3221'><AccountNo>83838</AccountNo><FirstName>Tom</FirstName><LastName>Jackson</LastName></Person><Person xmlns='http://CompanyName.AppName.version1' uniqueID='21132'><AccountNo>789875</AccountNo><FirstName>Chris</FirstName><LastName>Smith</LastName></Person></Request>"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xml); XmlNodeList nodeList = xmlDoc.GetElementsByTagName("Person"); foreach (XmlNode node in nodeList) { Console.WriteLine(node.Attributes["uniqueID"].Value); }