2016-05-16 8 views
0
Data:- 

static_vector <- c(10,50,100,200,500,1000) 
df <- data.frame(Id=c("A1","B1"),Value=c(5,200)) 

    Id Value 
1 A1  5 
2 B1 200 

df$Position <-static_vector[which(df$Value<=static_vector)] 

Error:- 
replacement has 4 rows, data has 2 

Expected Output:- 

    Id Value Position 
1 A1  5 1 
2 B1 200 4 

A1(5)の値が静的ベクトルの最初の要素以下であることがわかるので、上記のの文をで試してみましたが、間違いを投げます。ユーザ入力値が大きいベクトルの最小インデックスを見つける

答えて

2

あなたがcut機能を使用することができます。

df$Position <- as.integer(cut(df$Value, breaks = c(0, static_vector))) 
df 
    Id Value Position 
1 A1  5  1 
2 B1 200  4 
2

あなたがwhichを使用したい場合は、

df$Position <- sapply(df$Value, function(i) min(which(i <= static_vector))) 
df 
# Id Value Position 
#1 A1  5  1 
#2 B1 200  4 
関連する問題