2016-11-21 3 views
0

したがって、私はデータセットを持っています。私がしようとしているのは、結果として得られる曲線上のすべてのローカルマキシマを見つけることです。最初の列にx値があり、2番目に最初の手順でy値があるCSVファイルを読み込みました。ベクトルを数値モードに強制するR

最大値を見つけるために、pracmaデータベースからfindpeaks()関数を使用しようとしました。

Error: is.vector(x, mode = "numeric") is not TRUE 

だから、私は最初だけで、ベクターにこれを変換してみました:しかし、私はそれを実行しようとしたたびに、私は同じエラーを得ました。それでも同じ問題が発生しましたが、is.vector(x, mode = "any")が真を返すようになりました。私はいくつかの他のヘルプスレッドを見つけました(私はもはや見つけることができませんので、共有できません!)、そしてを使ってlapplyを使って新しいベクトルの各エントリを強制しようと決めました。うまくいきませんでした。 ?as.numericを見て、as.doubleがより適していると述べました。うまくいきませんでした。現在、私は紛失しており、何をすべきか分からない - 現在の作業コードを以下に示します。

plot <- read_csv("AFGP60 UV-05-04-16.csv", 
       col_names = FALSE, na = "null", skip = 2,n_max = numrow) 
diffplot <- c(plot[1:601,2]) 
diffplot <- lapply(diffplot,as.double) 
findpeaks(diffplot)` 
+2

あなたの説明から、データが実際にどのように見えるかを知ることは不可能です。あなたのデータを表示するには、 'str()'や 'dput()'のようなツールを使います。 –

+0

これはおそらく文字列として読み込まれ、CSVで引用された可能性があります。修正は 'read_csv(...、col_types)'を使うことです。@RomanLuštrikが尋ねたようにデータをダンプしてください。また、「as.numeric'が動作しませんでした」という*を教えてください。正確なエラー警告(データと同様に)を表示してください。 – smci

+0

私はそのサイズと私の研究の一部であるという事実のためにデータを共有したくなかった。データそのものの記述に十分な情報を与えたいと思っていました。しかし、私は関数str()とdput()について知りませんでした.dput()はベクトルがリストに格納されていることを認識させましたので、単にdiffplot keefles

答えて

0

お試しdiffplot <- as.numeric(as.vector(plot[1:600, 2]))

問題は、データが文字または要素として読み取られたことでした。上記のコードはそれを変更する必要があります。ただし、コードには複数の問題があります。まず、plotはプロットに使用される基本関数です。このような名前の変数を命名するのは悪い習慣です。

第2に、diffplot変数はベクトル(2番目の列の最初の600行)なので、lapply関数を使用して各要素を個別に変更する必要はありません。

+0

残念なことに、うまくいきませんでした - 私は理由を考え出しました。 diffplotがリストに格納されていたので、is.vectorはfalseを返しました。チェックするたびにリストが表示され、強制は問題ではなかったからです。あなたの時間を助けてくれてありがとうございました - そして、私は明白にlapplyについての事を覚えています! – keefles

関連する問題