for loop
次のベクトルで文字を比較するa を書くことができました。
bases <- c("G","C","A","T")
test <- sample(bases, replace=T, 20)
test
戻ります
[1] "T" "G" "T" "G" "C" "A" "A" "G" "A" "C" "A" "T" "T" "T" "T" "C" "A" "G" "G" "C"
関数Comp()
を使用して、文字が次の文字と一致しているかどうかを確認できます
Comp <- function(data)
{
output <- vector()
for(i in 1:(length(data)-1))
{
if(data[i]==data[i+1])
{
output[i] <-1
}
else
{
output[i] <-0
}
}
return(output)
}
その結果;
> Comp(test)
[1] 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0
これは機能していますが、数が多いと非常に遅くなります。そのため、私は試しましたsapply()
Comp <- function(x,i) if(x[i]==x[i+1]) 1 else 0
unlist(lapply(test, Comp, test))
残念ながら動作しません... ( Error in i + 1 : non-numeric argument to binary operator
) ベクター内の前の文字にアクセスして比較する方法がわかりません。また、length(data)-1
最後の文字を「比較しない」ことも問題になる可能性があります。
助けてくれてありがとう!
乾杯ラッキー