gpt4 book ai didi

r - 在 R 中导入或解析列表

转载 作者:行者123 更新时间:2023-12-04 10:13:16 24 4
gpt4 key购买 nike

我有一个 CSV 文件,其中一个字段包含一些存储的坐标,如下所示:

"TRIP_ID","COORDINATES"

"T1","[[-8.585676,41.148522],[-8.585712,41.148639],[-8.585685,41.148855],[-8.58573,41.148927],[-8.585982,41.148963]]"

"T2","[[-8.610876,41.14557],[-8.610858,41.145579],[-8.610903,41.145768]]"

...

当我在 R 中导入它时,我获得的是一个包含两列的数据框。问题是“COORDINATES”列的类。在我的情况下,字符或片段都没什么用。

我想要实现的是将这些数据存储在列表或向量中,以便我可以编写类似 的内容。 df$坐标[1][1] 并获取 -8.585676,41.148522 .

我怎样才能做到这一点?
谢谢你的帮助 :)

最佳答案

这是使用 strapply 的一种选择gsubfn 包中的函数:

> library(gsubfn)
> tmp.txt <- '"TRIP_ID","COORDINATES"
+ "T1","[[-8.585676,41.148522],[-8.585712,41.148639],[-8.585685,41.148855],[-8.58573,41.148927],[-8.585982,41.148963]]"
+ "T2","[[-8.610876,41.14557],[-8.610858,41.145579],[-8.610903,41.145768]]"
+ '
>
> df <- read.table(text=tmp.txt, stringsAsFactors = FALSE, header=TRUE)
>
> coords <- strapply(df$X..COORDINATES,
+ '\\[(-?[0-9]+\\.?[0-9]*),(-?[0-9]+\\.?[0-9]*)\\]',
+ FUN=function(one,two) c(as.numeric(one),as.numeric(two)),
+ combine=list)
> str(coords)
List of 2
$ :List of 5
..$ : num [1:2] -8.59 41.15
..$ : num [1:2] -8.59 41.15
..$ : num [1:2] -8.59 41.15
..$ : num [1:2] -8.59 41.15
..$ : num [1:2] -8.59 41.15
$ :List of 3
..$ : num [1:2] -8.61 41.15
..$ : num [1:2] -8.61 41.15
..$ : num [1:2] -8.61 41.15
> coords[[1]][[1]]
[1] -8.585676 41.148522

这假设小数点前总是至少有 1 位数字(没有 -.123),如果需要,它也可以扩展为包括这种情况。这会创建一个单独的列表,但如果您确实需要,可以将该列表指定为原始数据框中的一列。

关于r - 在 R 中导入或解析列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30441865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com