在R中展平或取消列出数据框

时间:2017-03-17 12:27:40

标签: r dataframe flatten googleway

我使用Googleway包来获取一堆lat长坐标的高程信息,其总共有954个。

我已将调用分成3个单独的文件,但它们是列表格式,当我将它们转换为数据帧时,它们是嵌套的数据帧格式。我一直试图压扁文件并取消列表,但我没有成功。

DF <- read.csv("Site Coor R.csv", header = T, colClasses = c("numeric","numeric"))

result1 <- google_elevation(df_locations = DF[1:350,], key = "KEY")
result2 <- google_elevation(df_locations = DF[351:700,], key = "KEY")
result3 <- google_elevation(df_locations = DF[701:954,], key = "KEY")

> str(result1)
List of 2
 $ results:'data.frame':    350 obs. of  3 variables:
  ..$ elevation : num [1:350] 14.15 2.14 2.66 6.78 23.27 ...
  ..$ location  :'data.frame':  350 obs. of  2 variables:
  .. ..$ lat: num [1:350] 52.7 52.7 52.7 52.9 52.7 ...
  .. ..$ lng: num [1:350] -8.61 -8.83 -8.92 -8.98 -8.91 ...
  ..$ resolution: num [1:350] 611 611 611 611 611 ...
 $ status : chr "OK"


do.call("c", result1[["location"]])

result1 <- unlist(result1, recursive = TRUE, use.names = TRUE)

write.table(data.frame(subset(result1DF,select=-c(results.location)),unclass(result1DF$results.location)))

由于result1result2result3具有相同的结构,是否有一种简单的方法来合并它们,展平连接表然后导出为CSV?

1 个答案:

答案 0 :(得分:5)

我们可以在@DependsOn中获取所有对象并在一次通话中创建list

data.frame

如果我们需要一个表,那么lst <- lapply(mget(paste0("result", 1:3)), function(x) do.call(data.frame, x$results)) str(lst[[1]]) #'data.frame': 12 obs. of 3 variables: #$ elevation : num -0.546 0.537 0.42 -0.584 0.847 ... #$ location.lat: int 61 85 53 80 82 52 66 62 68 57 ... #$ location.lng: int 11 7 10 19 1 -2 -6 -8 -14 -13 ... 他们在一起

rbind

数据

library(data.table)
dt <- rbindlist(lst)
fwrite(dt, file = "yourfile.csv")