我在我的函数中使用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”语句来解决,但我想知道是否有更好的解决方案。说话棒都是你的:)
答案 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]