首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修正“匹配中的错误”(x,table,nomatch = 0L):“匹配”需要向量参数“?

如何修正“匹配中的错误”(x,table,nomatch = 0L):“匹配”需要向量参数“?
EN

Stack Overflow用户
提问于 2021-07-01 09:03:56
回答 3查看 1.7K关注 0票数 0

当我运行这段代码时

代码语言:javascript
复制
url <- "https://github.com/midas-network/covid19-scenario-modeling-hub/blob/master/data-processed/Karlen-pypm/2021-05-30-Karlen-pypm.zip?raw=true"
temp <- tempfile()
download.file(url, temp)
karlen_model <- read.csv(unz(temp, "2021-05-30-Karlen-pypm.csv")) 
unlink(temp)

#karlen_model <- fread("/Karlen-pypm/2021-05-30-Karlen-pypm.csv")
karlen_ca <- karlen_model[location %in% "06"]

我知道错误:

代码语言:javascript
复制
"Error in match(x, table, nomatch = 0L) : 
  'match' requires vector arguments"

我试过这个解决办法:

代码语言:javascript
复制
karlen_ca <- karlen_model[location == "06"]

但另一个错误是:

代码语言:javascript
复制
Error in location == "06" : 
  comparison (1) is possible only for atomic and list types

请注意:

由于我正在下载公开可用的数据,因此示例是reproducible;

  • The object karlen_model是一个数据框架;and

  • class(karlen_model$location)返回factor.

非常感谢,大卫

EN

回答 3

Stack Overflow用户

发布于 2021-07-01 12:50:30

您正在尝试的语法是一个有效的data.table语法,而不是一个有效的基R语法。

在基本R中,需要使用$[[显式引用dataframe列。

所以这两种方法都能奏效-

代码语言:javascript
复制
karlen_ca <- karlen_model[karlen_model$location %in% "06", ]

代码语言:javascript
复制
karlen_ca <- karlen_model[karlen_model$location == "06", ]

您的代码可以使用with,但是它需要在行选择后添加一个逗号。

代码语言:javascript
复制
karlen_ca <- with(karlen_model, karlen_model[location == "06", ])
票数 2
EN

Stack Overflow用户

发布于 2021-07-01 13:41:12

您可以在基R中使用子集:

代码语言:javascript
复制
# some data as an example
dat <- data.frame(something = letters[1:4], 
                  location = c("06", "03", "01", "06"))

# use subset
subset(dat, location == "06")
#R>   something location
#R> 1         a       06
#R> 4         d       06

# or with the the new pipe in R 4.1.0
dat |> subset(location == "06")
#R>   something location
#R> 1         a       06
#R> 4         d       06
票数 2
EN

Stack Overflow用户

发布于 2021-07-01 09:03:56

我确实找到了一个成功的解决办法--即使用dplyr的过滤器:

代码语言:javascript
复制
karlen_ca <- karlen_model %>% filter(location == "06")

所以,这更多的是一个好奇的问题,而不是任何事情,但是为什么前两行(使用括号和基R)中的任何一行都不起作用?如何才能修正它们,特别是在基本R框架内?

感谢你,大卫

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68207352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档