通过提示用户输入 R 来更新列

Update column by prompting user input R

我有一个数据框,我需要在其中手动筛选每一行并确定我使用 RecordLinkage 包匹配的列是否确实匹配。一些记录很可能是匹配的,而不仅仅是由于虚假关联。我想快速识别这些,而无需将我的数据导出到 csv 并逐个滚动浏览它们。我想要的是遍历每一行数据,并为每一行提示用户(我)一个问题 "is this a match (y/n)?",其中答案('yes' 或 'no' ) 将输入输入到该行的列中。

此代码将重现数据的快速示例,

id= c(1, 2, 3, 4)
loc1 = c("21ST AVE", "5TH ST", "HICKMAN ST", "GULF DR")
loc2 = c("21ST AVE BEACH ST", "5 EAST HARPER BLVD", "28 HARLEY ST", "1000 GULF DR")
day1 = c(12, 13, 14, 15)
day2 = c(12, 13, 14, 15)
time1 = c("20:52", "12:52", "15:35", "14:45")
time2 = c("20:52", "18:29", "03:55", "15:01")
df = data.frame(id, loc1, loc2, day1, day2, time1, time2)

提供此结果,

id  loc1        loc2                day1    day2    time1   time2
1   21ST AVE    21ST AVE BEACH ST   12      12      20:52   20:52
2   5TH ST      5 EAST HERST BLVD   13      13      12:52   18:29
3   HICKMAN ST  28 HARLEY ST        14      14      15:35   03:51
4   GULF DR     1000 GULF DR        15      15      14:45   15:01

我想要的是提示询问

Is this a match (y/n)?
----------------------
id  loc1        loc2                day1    day2    time1   time2
1   21ST AVE    21ST AVE BEACH ST   12      12      20:52   20:52

在每一行上回答是或否将给出以下结果,

id  loc1        loc2                day1    day2    time1   time2    match
1   21ST AVE    21ST AVE BEACH ST   12      12      20:52   20:52    y
2   5TH ST      5 EAST HERST BLVD   13      13      12:52   18:29    n
3   HICKMAN ST  28 HARLEY ST        14      14      15:35   03:55    n
4   GULF DR     1000 GULF DR        15      15      14:45   15:01    y

我什至不确定这是否是 a) 可能,b) 可行,或 c) 最好的解决方法。打开 thoughts/suggestions。谢谢

先做一个函数...

checkRow<-function(df){
  match<-vector()
  for(i in 1:nrow(df)){
    print(df[i,])
    ans<-readline("Is this a match? (y or n)")
    match<-c(match, ans)
  }
  return(cbind(df, match))
}

然后这样称呼它:

checked<-checkRow(df)