【发布时间】:2014-04-30 16:34:01
【问题描述】:
搜索了很多,没有找到回复。
我正在为 qdap 库中的“查找”功能而苦苦挣扎。我在数据框 CityCountry 中有一个城市名称列表;这是代码和str:
CityCountry <- data.frame(City = as.character(rownames(spint)))
CityCountry <- as.character(CityCountry)
str(CityCountry)
chr "c(18, 40, 55, 64, 68, 70, 82, 86, 90, 107, 121, 127, 144, 152, 163, 184, 194, 205, 210, 211, 213, 217, 218, 223, 226, 227, 228,"| __truncated__
spint 是一个最短路径数据框,它使用相关城市名称作为行名。我想抓住这些,用它们新建一个数据框,在数据框routes_lookup中查找每个城市对应的国家。这是 str(routes_lookup) 和我的查找函数:
str(routes_lookup)
'data.frame': 2792 obs. of 2 variables:
$ City_Dest : chr "Buenos Aires" "Buenos Aires" "Mar Del Plata" "Mar Del Plata" ...
$ Country_Dest: Factor w/ 240 levels "Afghanistan",..: 9 9 9 9 9 9 9 152 152 170 ...
CityCountry$Country <- lookup(CityCountry, routes_lookup)
这是我不断遇到的错误。我已经尝试过很多次了,但上面的函数调用似乎最接近正确(尽管当然不完全正确)。
Error in exists(x, envir = envr) :
variable names are limited to 10000 bytes
我当然认为上面显示的 str(CityCountry) 说明了问题。但是数据框包含 chr 类型的列,routes_lookup 中的 City_Dest 列也是如此。如何使这两列具有相同的数据类型?
【问题讨论】:
-
您没有提供可重现的示例。但我的猜测是您不希望 CityCountry 成为单个字符串。这可能就是导致问题的原因。
-
从一个因素变成一个字符试试
routes_lookup$Country_Dest <- as.character(routes_lookup$Country_Dest) -
是的,达森!这将是问题所在。没有我认为的数据,可重现的例子很难吗?也许不吧。无论如何,我如何强制它成为一个 293 行的 1 列数据框(有 293 个城市名称)?
-
请使用
CityCountry和routes_lookup使head和dput可重现,这将有很大帮助。我认为 Gary 走在了正确的轨道上,因为hr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" ... > str(as.character(rownames(CO2)))给了我chr [1:84] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" ...而且我看不到如何在没有数字的表格中查找作为数字的行名。 -
啊好吧!如果需要,我当然可以使用 mtcars 进行重现。不好意思,这里新来的。我已成功将其转换为 1 列、293 行的数据框,其中城市
标签: r lookup type-conversion qdap