对于R中的循环不能正常工作

时间:2015-05-16 01:06:40

标签: r for-loop

这是我之前关于从R中字符串中提取关键字的问题的延续:Extract a specific key word from a string in R

我编写了以下代码,按照我的意愿返回关键字:

loc <- t1$place
loc <- gsub('"', '', loc)
loc <- gsub(',', '', loc)
for(i in 1:nrow(t1)) 
  country <- word(loc[i], 19, sep=fixed(" : "))
country <- gsub(' }', '', country)

for循环似乎无法正常工作。当我使用相同的代码insde for循环与硬编码数字,如下所示:

country <- word(loc[2], 19, sep=fixed(" : "))
country <- gsub(' }', '', country)

代码似乎有效。但是当我把它放到循环中时,它会给我一个错误

Error in word[loc, "start"] : subscript out of bounds

请在出错的地方帮助我。

class(country) 

说这是一个字符类型。我编写for循环错误的方式是什么?

其他细节:t1是我桌子的数据框。我使用Import数据集加载我的文件week_tweet_filtered.csv并使用命令:

t1 <- week_tweet_filtered

在t1变量中加载相同的内容。我使用t1 $ place访问表格的place列。此外,场所列包含格式的字段:

{ "id" : "94965b2c45386f87", "name" : "New York", "boundingBoxCoordinates" : [ [ { "longitude" : -79.76259, "latitude" : 40.477383 }, { "longitude" : -79.76259, "latitude" : 45.015851 }, { "longitude" : -71.777492, "latitude" : 45.015851 }, { "longitude" : -71.777492, "latitude" : 40.477383 } ] ], "countryCode" : "US", "fullName" : "New York, USA", "boundingBoxType" : "Polygon", "URL" : "https://api.twitter.com/1.1/geo/id/94965b2c45386f87.json", "accessLevel" : 0, "placeType" : "admin", "country" : "United States" }

1 个答案:

答案 0 :(得分:0)

这对我有用

x<-'{ "id" : "94965b2c45386f87", "name" : "New York", "boundingBoxCoordinates" : [ [ { "longitude" : -79.76259, "latitude" : 40.477383 }, { "longitude" : -79.76259, "latitude" : 45.015851 }, { "longitude" : -71.777492, "latitude" : 45.015851 }, { "longitude" : -71.777492, "latitude" : 40.477383 } ] ], "countryCode" : "US", "fullName" : "New York, USA", "boundingBoxType" : "Polygon", "URL" : "https://api.twitter.com/1.1/geo/id/94965b2c45386f87.json", "accessLevel" : 0, "placeType" : "admin", "country" : "United States" }'
y<-fromJSON(x)
y[['country']]

请注意,第一行用单引号括起json ...我不知道这是否是您遇到的问题。

如果您没有引号,请尝试

x<-as.string(t1$place)

我真的不明白你是如何得到的那样不是一个字符串。