如何在 R 中的数据框上同时使用 `grep` 和 `which`?

How do use both `grep` and `which` on a data frame in R?

我有一个使用 which 的搜索,另一个使用 grep 的搜索,如下所示:

dates <- myframe[grepl(abreviation,myframe$geo),"date"]
dates <- c(dates, myframe[which(myframe$geo == fullname),"date"])

abreviationfullname 是两个不同的字符串。

我尝试使用 | 返回了 0 个条目。我也尝试了 endsWith,但这返回了警告,即只有最上面的结果将被使用,并且列表只有一个结果。

我遇到的问题是它没有返回字符串格式的日期,这是 date 的格式,而是一个整数。

我需要做哪些不同的事情来获取这些日期的向量

编辑:这是一个样本数据集-

pastebin.com/yXq6khNV

which 输出一个整数向量,而 grepl 输出一个布尔值。要让它们匹配并协同工作,请在不调用 which 的情况下尝试。您还需要整理 geo 列中的那些 NA(我还将您的 fullname 更改为 "New York, NY",因为 "New York, USA" 没有出现在您的 table):

dates <- myframe[ !is.na( myframe$geo ) & 
                      ( grepl(abbreviation,myframe$geo) | myframe$geo == fullname ), 
                  "date" ]

给出(tibble 格式是因为我使用 readr 读取您的数据集):

> dates
# A tibble: 1 × 1
               date
              <chr>
1 12/30/10 02:37 PM

如果你因为某种原因在过程中丢失了格式,你可以指定它,虽然它不是 Date 格式,所以我在这里只指定 character:

dates <- myframe[ !is.na( myframe$geo ) & 
                      ( grepl(abbreviation,myframe$geo) | myframe$geo == fullname ), 
                  as.character( "date" ) ]

我通过将已过滤的数据框传递给 grepl:

解决了这个问题
dates <- myframe[grepl(abreviation,myframe[which(myframe$geo == fullname),]),"date"]