Seychelles. 2021-03-21 10:25 采纳率: 0%
浏览 384

r语言中sqrt和as.matrix

我要做AMOVA分析 需要欧式矩阵 用as.matrix做出了个矩阵

as.matrix(data[distances])[1:20,1:20]

然后用amovapro <- amova(samples = data[protist], distances = sqrt(data[distances]), structures = data[structures])

错误为Object of class 'dist' expected for distances

如果把sqrt(data[distances])改为sqrt(data$distances) 就是数学函数中用了非数值参数

我知道问题可能是出在 之前的 distances < -()  

求教如何能将distances变为数值参数 或者as.matrix的原始数据录入格式应该是怎么样的呢

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-23 23:52
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    sqrt() 函数接受一个数值或者向量作为输入。如果你想要使用 sqrt() 函数来计算距离矩阵,你需要首先将其转换成数值形式。

    你可以通过以下方式实现:

    # 创建一个距离矩阵
    data(distances)
    

    在这个例子中,distances 是一个向量,其中每个元素都是两个向量之间的欧氏距离。为了使用 sqrt() 函数,我们需要将其转换为数值形式。这可以通过使用 as.numeric() 函数来完成。

    例如:

    # 转换距离矩阵到数值形式
    data(distances) <- as.numeric(data(distances))
    

    现在,distances 应该是一个数值矩阵,你可以继续使用 sqrt() 函数来计算距离矩阵了。

    评论

报告相同问题?