将数据框转换为列表

4

我希望将一个数据框转换为列表。这是一个数据框的示例:

colname   name    age    address
1         John    22     Singapore
2         James   44     India
3         Jessie  21     Australia 

我希望将它转换为一个列表,如下所示:
Name : John Age: 22 Address: Singapore
Name : James Age: 44 Address India
Name : Jessie Age: 21 Address: Australia.

基本上,我希望在单个R数据类型中获得列名和相应行的值的聚合。

as.list 对我来说不起作用。


你想把这个转换成JSON格式吗? - Ricardo Saporta
lapply(split(X, rownames(X)), as.list)的翻译是什么? - Arun
1个回答

6
您可以简单地使用:
 apply(X, 1, function(r) paste(names(X), r, sep=":", collapse=" "))

其中 X 是您的 data.frame

如果您不想在输出中包含第一列,请分别添加合适的 [, -1][-1]

apply(X[, -1], 1, function(r) paste(names(X)[-1], r, sep=":", collapse=" "))

[1] "name:John age:22 address:Singapore"  
[2] "name:James age:44 address:India"     
[3] "name:Jessie age:21 address:Australia"

然而,如果你的目标是将其转换为JSON格式,你可以使用rjson软件包:

library(rjson)
apply(X[,-1], 1, toJSON)

这将为您提供一个适当引用的字符串:

cat( apply(X[,-1], 1, toJSON) )

{"name":"John","age":"22","address":"Singapore"} 
{"name":"James","age":"44","address":"India"}
{"name":"Jessie","age":"21","address":"Australia"}

嗨,Ricardo,感谢快速回复。 我想做的事情基本上是在mongodb中插入一个数据框,但我使用的rmongodb包需要传递类似于列表或bson的对象。 例如:mongo.insert(mongo,“集合名称”,list\bson object) 我对R和Mongo都不太了解,所以如果我的疑问太简单,还请见谅。 - Ankit Solanki
“rjson” 应该给你一个适用于Mongo的输出。另外,你看过 RMongo包 吗?你现在是在使用它吗? - Ricardo Saporta
不,我正在使用 http://cran.r-project.org/web/packages/rmongodb/rmongodb.pdf 包。 - Ankit Solanki
我必须将其转换为列表,然后尝试使用包中的函数将列表转换为BSON对象。但是到目前为止,我对列表的理解是,当您使用as.list函数将数据框转换为列表时,您得到的是一个基于列而不是行的元素列表,请纠正我如果我在这里错了。 - Ankit Solanki
此外,至少有三个mongo/R软件包。如果一个不起作用,可以搜索谷歌并尝试另一个。 - Ricardo Saporta
apply(X, 1, as.list) 运行得非常完美,将其转换为 BSON :) 非常感谢,兄弟... 干杯 - Ankit Solanki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接