shell:你为什么 numeric argument required?

已知:shell编写function时,返回值是一个字符串,执行时报错

....sh: line 11: return:...: numeric argument required

解:原因为shell的function只能返回整数值,故该处可以将返回值赋值给一个变量,调用该funciton后,可以通过该变量获取到返回值

demo:

#!/bin/bash
# 声明function
test(){
    # 假如我是返回值
    str='hello shell'
    result=$str
}

# 调用function
test

# 获取返回值
echo "INFO result:$result"

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常是因为数据中存在缺失值或非数值数据导致的。你可以尝试使用 `na.omit()` 函数将数据中的缺失值删除或使用 `as.numeric()` 函数将非数值数据转换成数值类型,以避免这个错误的发生。以下是修改后的代码示例: ```R # 导入数据 data <- read.csv("data.csv", header = TRUE) # 提取光谱数据并删除缺失值 spectra <- na.omit(data[-1]) # 将光谱数据转换成数值类型 spectra <- as.matrix(spectra) spectra <- apply(spectra, 2, as.numeric) # 定义分数阶微分函数 fracdiff <- function(data, d) { n <- nrow(data) k <- 1:n w <- (1:(n - 1))^(-d/2) w <- c(1, w) x <- c(0, cumsum(data)) y <- x * w z <- diff(y) res <- z[-1] / w[-1] return(res) } # 进行分数阶微分 d_values <- c(1/5, 2/5, 3/5, 4/5, 1, 6/5, 7/5, 8/5, 9/5, 2) fracdiff_res <- data.frame(wavelength = data$wavelength) for (d in d_values) { fracdiff_res <- cbind(fracdiff_res, fracdiff(spectra, d)) } # 进行二阶微分 second_diff <- apply(spectra, 2, diff, differences = 2) second_diff <- rbind(rep(NA, ncol(spectra)), second_diff) second_diff <- rbind(rep(NA, ncol(spectra)), second_diff) second_diff_res <- data.frame(wavelength = data$wavelength, second_diff) # 输出结果 write.csv(fracdiff_res, "fracdiff.csv", row.names = FALSE) write.csv(second_diff_res, "second_diff.csv", row.names = FALSE) ``` 在这个修改后的代码中,我们使用 `na.omit()` 函数删除了数据中的缺失值,并使用 `as.numeric()` 函数将光谱数据转换成数值类型。这样,我们就可以避免出现 `non-numeric argument` 的错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值