【发布时间】:2016-10-17 14:13:00
【问题描述】:
我尝试将匹配的 JSON 部分从列“数据”提取到新列“地理”中。此代码仅正确提取第一行,然后重复自身。我希望 'geo' 列显示为:
GEO 斯德哥尔摩、GEO 纽约、GEO 马德里、GEO 伦敦
而不是当前
GEO 斯德哥尔摩,GEO 斯德哥尔摩,GEO 斯德哥尔摩,GEO 斯德哥尔摩
代码:
library(rjson)
data <- c('["GEO STOCKHOLM","TYPE LOW"]','["GEO NEW YORK","TYPE MEDIUM"]','["GEO MADRID","TYPE HIGH"]','["GEO LONDON","TYPE MAX"]')
df <- data.frame(data, stringsAsFactors=FALSE)
df$geo <- grep("GEO", fromJSON(df$data), value = TRUE)
如您所见,我只想将 'geo' 部分保留在分号内,而丢失 'type' 部分。查看 df 数据框,这是我的(不正确的)输出:
【问题讨论】:
-
看看
fromJSON(df$data)产生了什么。它只是遍历 GEOM STOCKHOLM 和 TYPE LOW。 -
不是真正的莱昂纳多,不过谢谢。问题似乎是 grep 函数由于某种原因没有遍历 df$data 列?它似乎只是正确地提取了第一个元素,然后重复自身。
-
这就是 Roman,fromJSON(df$data) 只是给了我这样的第一组:[1]“GEO STOCKHOLM”“TYPE LOW”。我希望它能给我所有四行。