2017-06-23 9 views
1

fft(高速フーリエ変換)をデータフレームに適用する際にこのエラーが発生するのはなぜですか?変数ごとに同じ関数を単独で使用すると、エラーは発生しません。データフレームにfft関数を正しく適用する方法

df<-read.table(text="pregnant glucose blood skin INSULIN MASS DIAB AGE CLASS predict_probability 
            1  106 70 28  135 34.2 0.142 22  0  0.15316285  
       1  91 54 25  100 25.2 0.234 23  0  0.05613959  
       4  136 70 0  0 31.2 1.182 22  1  0.54034794  
       9  164 78 0  0 32.8 0.148 45  1  0.64361578  
       3  173 78 39  185 33.8 0.970 31  1  0.79185196  
       11  136 84 35  130 28.3 0.260 42  1  0.31927737  
       0  141 84 26  0 32.4 0.433 22  0  0.41609308  
       3  106 72 0  0 25.8 0.207 27  0  0.10460090  
       9  145 80 46  130 37.9 0.637 40  1  0.67061324  
       10  111 70 27  0 27.5 0.141 40  1  0.16152296  
       ",header=T) 

私はfft(df$pregnant)を記述する場合、私はこのエラーを取得する私は必要な結果を得るが、私は、全体のデータフレームfft(df)上でそれを使用しよう:

Error in fft(df) : non-numeric argument

+1

アイデアは、列ごとの詳細情報を取得し、データフレームの新しい列として新しい情報を追加しました – mql4beginner

答えて

1

のみを使用して数値列:

apply(df,2,function(x) fft(as.numeric(x))) 
1

私はあなた自身で投稿しなかったので、答えとして私のコメントを拡大できますか?

oo <- lapply(df, fft) 
names(oo) <- paste0(names(oo), ".FFT") 
oo <- data.frame(df, oo) 

または単一の行:

oo <- data.frame(df, setNames(lapply(df, fft), paste0(names(df), ".FFT"))) 
関連する問題