【问题标题】:R: "Variables names limited to" error in "lookup" function, qdapR:“查找”函数中的“变量名称仅限于”错误,qdap
【发布时间】: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 &lt;- as.character(routes_lookup$Country_Dest)
  • 是的,达森!这将是问题所在。没有我认为的数据,可重现的例子很难吗?也许不吧。无论如何,我如何强制它成为一个 293 行的 1 列数据框(有 293 个城市名称)?
  • 请使用CityCountryroutes_lookup 使headdput 可重现,这将有很大帮助。我认为 Gary 走在了正确的轨道上,因为 hr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" ... &gt; 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


【解决方案1】:

代表回答自己问题的 OP 回答如下:

注:由原发帖者发帖,此处抄袭

想通了。原始数据帧(CountryCity)和查找数据帧(routes_lookup)中的查找值必须是同一类型(并且仅仅因为两者都是字符,前者不能将字符全部粉碎到一个条目中)。另外,“terms”参数的colname必须在函数调用中指定。

spint <- as.data.frame(shortest.paths(g_all))
cities <- as.data.frame(matrix(rownames(spint)), byrow=TRUE)
CityCountry <- data.frame(City = as.character(cities$V1))
routes_lookup <- subset(routes_sa, select=c("City_Source", "Country_Source"))

CityCountry$Country <- lookup(CityCountry$City, routes_lookup)

【讨论】:

    猜你喜欢
    • 2021-08-31
    • 2022-01-13
    • 2017-12-17
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多