【发布时间】:2019-12-25 15:21:24
【问题描述】:
我有一个带有 ID 列和另一个虚拟列的数据框。在第一步中,用户输入一个应该是 ID 之一的数字(ID_edit)。然后确定相应的行索引。如果 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)
如果我改变了
ID_edit <- as.integer(1)
正在工作,到
ID_edit <- as.integer(2)
if 语句仍然是 TRUE,但我希望并希望这里有 else 块。
View(row_nr_df)
然后显示消息“表中没有可用数据”。
最后我想用行号访问数据框,例如:
char_edit <- test_df$char[[row_nr_df]]
但如果行号不存在,这不起作用。
【问题讨论】:
-
预期的结果是什么?您是否希望能够通过 1) 访问数据框。如果 ID_edit 在 ID 中(如果存在,则 ID_edit 与 ID_edit 匹配)和 2)。如果 ID_edit 不在 ID 列中,则直接由 ID_edit 给出的行号?还是只想知道行号以及是否在ID列?
-
用户输入一个 ID,它可以是一个整数或什么都没有。然后检查输入的ID是否在'test_df&ID'中。 a) 如果 ID 在“test_df&ID”中,则找到相应的行索引“row_nr_df”并使用该索引访问数据帧“test_df”。 b) 如果 ID 不在 'test_df&ID' 中或 ID 为空(无整数),则给出错误警告(-> else 语句)。
-
所以如果它在列表中就不需要说(“行列表中的行号”),而只需返回行?
标签: r dataframe if-statement indexing row