通过选择位置对矩阵进行子采样,其中R中的矩阵内具有特定值

时间:2016-01-05 17:06:44

标签: r matrix subsampling

我必须使用R而不是Matlab而且我是新手。

我有一大堆重复的数据,如1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9, 10 ...

我需要找到等于1,4,7,10的值的位置,以便使用这些位置创建样本。

在这种情况下,它将是位置(=对应值)1(= 1)4(= 4)7(= 7)10(= 10)11(= 1)14(= 4)17(= 7) 20(= 10)等等。

在MatLab中它将是y = find(ismember(x,[1,4,7,10])), 请帮忙!谢谢,帕维尔

2 个答案:

答案 0 :(得分:0)

这样的事情?

foo <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
bar <- c(1, 4, 7, 10)
which(foo %in% bar)
#> [1]  1  4  7 10 11 14 17 20

@ nicola,请随意复制我的答案并获得对答案的认可,只需尝试关闭已回答的问题即可。

答案 1 :(得分:0)

%in%运算符是您想要的。例如,

# data in x
targets <- c(1, 4, 7, 10)
locations <- x %in% targets
# locations is a logical vector you can then use:
y <- x[locations]

如果您想要位置的行和列索引,那么还有一两步,但是如果您这样做则不清楚。 (注意,逻辑将按列顺序排列。)