誰かが私を助けてくれるかもしれませんが、私はここで何が問題なのか分かりません。私はちょうどR(数日前)を学び始めました。ここで私はMarsenne数を作成した後、すべてのMarsenneの素数を与える関数を構築しなければなりません。 1)factorlistは数値のすべての要素を見つける 2)マルセン数はマルセン数を生成する関数です 3)CheckForMersennePrimesは、確立されたメルセンヌ数が素数であるかどうかをチェックする関数です。 第2の機能は完璧に動作します: ***関数は、「プライム」0からのx「戻ってトップレベルにジャンプする機能がありません」
問題があるの区間内にあるすべての素数numersを与えます。しかし、3つ目はうまくいかず、以下のように間違いがあります。何が間違っているのか分かりません。私が何をしようとしたのは、メルセンヌがすべてプライムではないので、私はメルセンヌナンバーのセットを調べ、素数であるかどうかにかかわらず、その中のすべての要素をチェックしてから削除します。
誰かが、何が間違っているのを見つけるのに役立つことができますか?最後の関数へ
factorlist<-function(x) {
if (x<2) {return ("Invalid input")}
if (x%%1!=0) {return ("Invalid input")}
if (x==2) {return(2)}
if (x==3) {return(3)}
vec<-0
for(i in 1:x){
if(x%%i==0){
vec[length(vec)]<-i
vec<-c(vec,0)
}
}
vec<-vec[-length(vec)]
vec<-vec[-length(vec)]
return(vec)
}
primes <- function(n){
primesR <- function(p, i = 1){
f <- p %% p[i] == 0 & p != p[i]
if (any(f)){
p <- primesR(p[!f], i+1)
}
p
}
primesR(2:n)
}
MarsenneNumber<-function(x){
vec<-c(0)
for (i in 3:x){
vec<-union(vec, c(2^primes(i)-1))
}
return(vec[-length(1)])
}
CheckForMersennePrimes<-function(x){
b<-length(MarsenneNumber(x)){
for (i in 1:b){
vec<-MarsenneNumber(x){
if (factorlist(vec[i])!=1){
vec<-c(-vec[i])
}
}
}
}
return(vec)
}
私のミス:
ここError: unexpected '}' in " }"
> }
Error: unexpected '}' in " }"
> }
Error: unexpected '}' in " }"
> return(vec)
Error: no function to return from, jumping to top level
> }
Error: unexpected '}' in "}"
は、この機能がどのように動作するかの一例である。ここ
は私の関数です。> factorlist(20)
[1] 1 2 4 5 10
> primes(20)
[1] 2 3 5 7 11 13 17 19
> MarsenneNumber(20)
[1] 3 7 31 127 2047 8191 131071 524287
のインデックスは、ありがとうございます。しかし、if(factorlist(vec [i])!= 1){"これらは両方ともコード内の同じ"レベル "にあるので、関数は私の新しい変数" vec "を" if(factorlist(vec [i])!新しい変数を導入して後で使用したい場合、{}を使用する必要があると私は考えていました。たぶん私は何かを誤解します。また、私はまだ同じ問題に直面しています。 – ike
エラー:戻る機能はありません。トップレベルにジャンプ >} エラー:予期せぬ「}」の「}」がこの問題に直面しています。 – ike
サンプルと 'primes'関数を追加して質問を更新しました。私は基本的なRスタジオを使用し、何もそれを変更していないし、それに何もダウンロードしていない。 – ike