R で 2 つの引数を受け取る関数を作成する必要があります。最初に数値 = X、2 番目にベクトル = V この関数は、X の同一の連続発生の最大数を返す必要があります。たとえば、f(6, c(7, 6,6,3,7,9,3,6,6,6,8,9) は 3 を返す必要があります
5220 次
2 に答える
1
関数は必要ないかもしれません
dat <- c(7,6,6,3,7,9,3,6,6,6,8,9)
fmax <- function(x, vec){
v <- rle(vec)
max(v$lengths[v$values == x])
}
fmax(x=6, vec=dat)
[1] 3
x が dat にない場合
fmax <- function(x, vec){
if(x %in% vec){
v <- rle(vec)
max(v$lengths[v$values == x])
} else 0
}
fmax(x=20, vec=dat)
[1] 0
于 2014-04-28T14:55:28.520 に答える
0
r <- numeric()
j <- 0
X <- 6
for(i in 1:length(V){
j <- ifelse(v[i]==X,j+1,0)
r[i] <- j
}
max(r)
ベクトル内のすべての要素の最大長が必要な場合:
a <- c(7,6,6,3,7,9,3,6,6,6,8,9)
b <- rle(a)
b <- data.frame(length=b$lengths, values=b$values)
aggregate(b, by=list(b$values), FUN=max)
于 2014-04-28T14:56:06.750 に答える