R:查找数据帧的行号时的错误处理

R:查找数据帧的行号时的错误处理,r,dataframe,if-statement,indexing,row,R,Dataframe,If Statement,Indexing,Row,我有一个带有ID列和另一个伪列的数据帧。在第一步中,用户输入一个数字,该数字应该是一个ID(ID\U编辑)。然后确定相应的行索引。如果ID在数据帧中,一切正常。如果没有(因为用户输入了错误的ID或根本没有ID),则应显示错误消息。我试过这个: test_df <- data.frame("ID" = c(1,3,6,8), "char" = c("a","b","c","d")) ID_edit <- as.integer(2

我有一个带有ID列和另一个伪列的数据帧。在第一步中,用户输入一个数字,该数字应该是一个ID(ID\U编辑)。然后确定相应的行索引。如果ID在数据帧中,一切正常。如果没有(因为用户输入了错误的ID或根本没有ID),则应显示错误消息。我试过这个:

  test_df <- data.frame("ID" = c(1,3,6,8),
                        "char" = c("a","b","c","d"))

  ID_edit <- as.integer(2)
  row_nr_df <- which(test_df$ID == ID_edit, arr.ind=TRUE)

  View(test_df$ID)
  row_list <- as.numeric(rownames(test_df))

  if(!is.null(row_nr_df %in% row_list)) {
    print("Row number in row list")
  } else {
    print("Row number not in row list")}

  View(row_nr_df)
然后显示消息“表中无可用数据”

最后,我希望使用行号访问数据帧,例如:

char_edit <- test_df$char[[row_nr_df]] 
char\u edit
test\u df isin(x=3,data=test\u df)
ID字符
2.3 b
>isin(x=2,数据=test_df)
[1] “不在列表中”

预期结果是什么?是否希望能够通过1)访问数据帧。若ID\u edit在ID中,则ID和ID\u edit匹配的行在ID中(若存在,则为2)。如果ID列中没有ID,则直接通过ID\u edit给出的行号进行编辑?或者您只是想知道行号以及它是否在ID列中?用户输入一个ID,可以是整数,也可以是零。然后检查输入的ID是否在“test_df&ID”中。a) 如果ID位于“test_df&ID”中,则找到相应的行索引“row_nr_df”,并使用此索引访问数据帧“test_df”。b) 如果ID不在“test_df&ID”中,或者ID为空(非整数),则给出错误警告(->else语句)。因此,如果ID在列表中,则不需要说(“行列表中的行编号”),而只返回行?
  ID_edit <- as.integer(2)
View(row_nr_df)
char_edit <- test_df$char[[row_nr_df]] 
 test_df <- data.frame("ID" = c(1,3,6,8),
                       "char" = c("a","b","c","d"))

 isin<-function(x,data)
 {if(length(which(data$ID == x, arr.ind=TRUE))>=1)
     {data[which(data$ID == x, arr.ind=TRUE),]}
   else{"not in list"}}

> isin(x=3,data=test_df)
  ID char
2  3    b
> isin(x=2,data=test_df)
[1] "not in list"