r中元素的等级和标识

时间:2017-04-04 03:56:20

标签: r goodness-of-fit kolmogorov-smirnov

我有两个不同元素的向量,比如x=c(1,3,4)y= c(2,9)

我想要一个范围向量,用于识别向量x的元素为1,而y的元素为0,即

(1,2,3,4,9)-----> (1,0,1,1,0)

你怎么能在r?

中得到0和1(1,0,1,1,0)的向量

由于

2 个答案:

答案 0 :(得分:1)

以下选项肯定不是数字上的最佳选择,但它是最简单直接的选项:

a<-c(1,2,3,4)
b<-c(5,6,7,8)
f<-function(vec0,vec1,inp)
{
  out<-rep(NA,length(inp))       #NA if input elements in neither vector

  for(i in 1:length(inp))
  {                                      #Logical values coerced to 0 and 1 at first, then
    if(sum(inp[i]==vec0))(out[i]<-0);    #summed up and if sum != 0 coerced to logical "TRUE"
  }

  for(i in 1:length(inp))
  {
    if(sum(inp[i]==vec1))(out[i]<-1);
  }

  return (out)
}

工作得很好:

> f(vec0=a,vec1=b,inp=c(1,6,4,8,2,4,8,7,10))
[1]  0  1  0  1  0  0  1  1 NA

答案 1 :(得分:0)

首先定义一个执行该操作的函数

blah <- function( vector,
                 x=c(1,3,4), 
                 y= c(2,9)){
outVector <- rep(x = NA, times = length(vector))
outVector[vector %in% x] <- 1
outVector[vector %in% y] <- 0
return(outVector)  
}

然后你可以使用这个函数:

blah(vector = 1:9)
blah(vector = c(1,2,3,4,9))

您还可以更改x&amp;的值y

blah(vector = 1:10,x = c(1:5*2), y = c((1:5*2)-1 ))