You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为数据框中指定列正确应用fft函数?解决非数值参数错误

解决FFT函数非数值参数错误问题

错误原因

fft()函数仅接受数值型向量作为输入,你选中的以"EE"开头的列(第3-92列)大概率是字符、因子或其他非数值类型,导致触发non-numeric argument错误。

分步解决方案

1. 检查目标列的数据类型

先确认哪些EE开头列是非数值型:

# 查看所有EE开头列的类型
sapply(LiC13j_w20_dat_dat2 %>% select(starts_with("EE")), class)

2. 将非数值列转换为数值型

如果列是因子或字符类型,先转换为数值(转换失败的内容会变为NA,可后续按需处理):

library(dplyr)

LiC13j_w20_dat_dat2 <- LiC13j_w20_dat_dat2 %>%
  mutate(across(starts_with("EE"), ~as.numeric(as.character(.x))))

注:如果是因子列,必须先转字符再转数值,否则会被转为因子的水平编码(不是原始数值)。

3. 批量应用FFT并生成新列

用dplyr::across批量处理,比循环更简洁高效,适配tibble结构:

# 对所有EE开头列应用FFT,生成带_fft后缀的新列
LiC13j_w20_dat_dat2 <- LiC13j_w20_dat_dat2 %>%
  mutate(across(starts_with("EE"), ~fft(.x), .names = "{col}_fft"))

原脚本的问题说明

  • 第一种循环:LiC13j_w20_dat_dat2$fft[i]的索引逻辑错误,tibble的$不能用数字索引,且你需要为每列生成单独的FFT列,而非一个名为fft的列;同时未处理非数值类型问题。
  • 第二种循环:未提前处理非数值列,即使列名匹配,非数值输入仍会触发fft()报错。

内容的提问来源于stack exchange,提问作者Debajyoti Kabiraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 10:51:25