【问题标题】:Normalize in R Programming Iris Dataset 'x' must be an array of at least two dimensionsR编程虹膜数据集'x'中的规范化必须是至少二维的数组
【发布时间】:2020-10-18 05:53:44
【问题描述】:

我有数据虹膜,我想制作数据虹膜 - 数据虹膜中每一列的平均值,所以我有这样的代码

y=iris[,1:4]
t=y-colMeans(y)
t

所以列显示矩阵数据 iris - 列的意思。所以我想问一下如何创建这样的东西,但是我写的是这样的循环

for(i in 1:4){y[,i]=iris[,i]-colMeans(iris[,i])}

但是'x'必须是至少二维数组的结果问题

请帮我解决这个问题

【问题讨论】:

    标签: r iris-dataset


    【解决方案1】:

    当您使用一列对数据框进行子集化时,它会将其转换为向量。为避免这种情况,请使用drop = FALSE

    for(i in 1:4){
      y[, i] = iris[,i] - colMeans(iris[,i, drop = FALSE])
    }
    

    但是,由于您一次只取一列,您可以使用 mean 而不是用于多列的 colMeans

    for(i in 1:4){
      y[, i] = iris[,i] - mean(iris[,i])
    }
    

    【讨论】:

      【解决方案2】:

      dplyr 我们可以做到

      library(dplyr)
      iris <- iris %>%
                   mutate(across(1:4, ~ . - mean(.)))
      

      或使用lapply

      iris[1:4] <- lapply(iris[1:4], function(x) x - mean(x))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-28
        • 1970-01-01
        • 2021-10-03
        • 2018-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多