2017-06-23 66 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"))) 
相关问题