如何更好地使用R中的匹配函数

时间:2016-08-17 22:13:16

标签: r match

我在我的函数中使用match(),我遇到了一个小问题,我以快速而肮脏的方式修复了这个问题。情况就是这样:

# input can have max 4 numbers, unique, range 0-3:
test_numeric_input<- c(0,1,2,3)
# I want to get rid of 0, if present: 
test_numeric_output<- test_numeric_input[-match(0, test_numeric_input)]

现在,问题是,如果不存在0,则输出为NA;如果我使用选项nomatch = 0,则结果向量为空(长度为0)。 我的修复:

test_numeric_output<- test_numeric_input[-match(0,
  test_numeric_input, nomatch=99)]

输入向量最大长度为4,所以我只得到0中不存在的整个向量。我想也可以用“if else”语句来解决,但我想知道是否有更好的解决方案。说话棒都是你的:)

1 个答案:

答案 0 :(得分:1)

v = 0
i = c(0,1,3,0,4)
i[!i %in% v]
# 1 3 4
# works for vector
v = c(0,4)
i[!i %in% v]
# 1 3

如上面评论中提到的单值,您可以使用

i[i != v]