【问题标题】:R Message: Error - replacement has x rows, data has yR 消息:错误 - 替换有 x 行,数据有 y
【发布时间】:2018-02-19 02:17:06
【问题描述】:

我正在尝试使用包ggmap 来计算带有地址列表的目标地址的距离。我在 csv 中的数据如下所示:

Order ID    Address
1652049  435 E 70TH ST,10021
1652123  1365 YORK AVE,10021
1652053  530 E 72ND ST,10021

所以我尝试获取从我的输入地址到所有这些地址的距离,例如:400 Hudson St,10013,我在 R 中有以下代码:

library(ggmap)
mydata<-read.csv("address.csv")
mydata$Address<-as.character(mydata$Address)
mydata$Distance<-NA
a<-c("289 Hudson St,10013")
mydata$Distance<-mapdist(mydata$Address,a)$miles

但是代码给了我如下错误信息:

Error in `$<-.data.frame`(`*tmp*`, "Distance", value = c(8.2403854, 8.2403854,  : 
  replacement has 53 rows, data has 31

【问题讨论】:

  • 你能提供一个可重现的例子(带数据)吗?
  • 对不起,Cyrus,我不知道如何上传文件,但它是一个简单的 excel cvs 文件,有 2 列,一列是 ids,另一列是地址。

标签: r spatial ggmap


【解决方案1】:

确保列名没有空格;因此,不要使用“Order ID”名称,而是使用“Order_ID”之类的名称。还将每个地址作为其自己的单独字符串:

library(ggmap)

mydata$Address<-as.character(mydata$Address)
mydata$Distance<-NA
a<-c("289 Hudson St,10013")
mydata$Distance<-mapdist(mydata$Address,a)$miles

输出:

  Order_ID             Address Distance
1  1652049 435 E 70TH ST,10021 8.240385
2  1652123 1365 YORK AVE,10021 8.475275
3  1652053 530 E 72ND ST,10021 8.618197

样本数据:

mydata <- data.frame(Order_ID=c(1652049,1652123,1652053),
                     Address=c('435 E 70TH ST,10021','1365 YORK AVE,10021',
                               '530 E 72ND ST,10021'))

编辑:

请注意,在上述数据中,每个地址都是向量 c() 中自己的字符串。我们可以通过在每个地址周围使用单引号来看到这种情况。我们这样做的原因是为了防止在使用 CSV 文件的情况下混淆数据,这些文件具有逗号分隔的列。在将 CSV 文件读入其列中有逗号的 R 之前,如上面的地址列,请确保该列中的每个值/单元格都像我所做的那样保存为自己的字符串(即用单引号括起来)。

【讨论】:

  • 谢谢。我不确定一个字符串是什么意思。在您的示例中,您使用向量来组合这些地址,但我正在从 cvs 文件中读取数据,任何想法,我的输入不被视为一个字符串?
  • @WorstSQLNoob - 好问题。请参阅上面添加解释的编辑。
  • 你好 Ryan,我发现了问题。在我的数据中,我对不同的 order_id 有相同的地址,然后它会给我错误。但如果我删除了那些重复的地址,我的原始代码运行良好。
  • @WorstSQLNoob - 好的,很好。如果列名中有空格,有时会发生这种情况。所以这就是为什么我也在我的回答中包含了一个评论。很高兴这对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 2015-07-01
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多