r 中元素的等级和识别
Ranks and identification of elements in r
我有两个具有不同元素的向量,比如说 x=c(1,3,4)
, y= c(2,9)
我想要一个范围向量来标识向量 x
的元素为 1 和 y
的元素为 0,即
(1,2,3,4,9) -----> (1,0,1,1,0)
你如何在 r 中获得零和一的向量 (1,0,1,1,0)?
谢谢
以下选项在数值上肯定不是最优的,但它是最简单直接的选项:
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
首先你定义一个函数来做那个
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 和 y 的值
blah(vector = 1:10,x = c(1:5*2), y = c((1:5*2)-1 ))
我有两个具有不同元素的向量,比如说 x=c(1,3,4)
, y= c(2,9)
我想要一个范围向量来标识向量 x
的元素为 1 和 y
的元素为 0,即
(1,2,3,4,9) -----> (1,0,1,1,0)
你如何在 r 中获得零和一的向量 (1,0,1,1,0)?
谢谢
以下选项在数值上肯定不是最优的,但它是最简单直接的选项:
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
首先你定义一个函数来做那个
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 和 y 的值
blah(vector = 1:10,x = c(1:5*2), y = c((1:5*2)-1 ))