小编cho*_*olz的帖子

功能比在R中应用(...,...,范围)更快

我在编写apply()时遇到了问题,这个问题很慢.我的任务是在不使用apply()的情况下给出Matrix的行范围.我正在努力,但我仍然需要帮助......

这是我到目前为止所得到的:

row.range <- function(X){
  Y <- matrix(0, nrow = nrow(X), ncol = 2)

    for(i in nrow(X)){
    Y[i, 1] <- min(X[i, ])
    Y[i, 2] <- max(X[i, ])
  }
  return(Y)
  print(Y)
}
Run Code Online (Sandbox Code Playgroud)

其中X可以是任何数字矩阵.可悲的是,输出只有0,除了我实际得到正确的最小值和最大值的最后一行.为什么这只适用于最后一行?

为了测试我用过:

M <- matrix(sample(1:6, size = 100 * 5, replace = TRUE), ncol = 5)
row.range(X)
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感谢:-)

for-loop r function range matrix

1
推荐指数
1
解决办法
171
查看次数

用R中的分组均值替换NA?

我一直坚持尝试用手段替代NA,我将非常感谢您的帮助。

我想用该列中一组的平均值替换数据框的多个列中的NA。在下面的示例中,我想将x1中的NA替换为14.5,因为第1个月中有13和16。NA2中的NA应替换为4.5。

这是我尝试的方式:

library(tidyverse)

df <- tibble(x1 = c(13, NA, 16, 17, 16, 12), x2 = c(1, 4, 4, 3, 5, NA),
         month = c(1, 1, 1, 2, 2, 2))

by_month <- group_by(df, month)

for (i in length(df)){
   for (j in nrow(df[[,i]])){
     if(is.na(df[[j, i]])){
      df[[j, i]] <- summarize(by_month[[j, i]],
                                   group_mean = mean(df[[, i]], na.rm=TRUE))
    }
    else{
      df[[j, i]] <- df[[j, i]]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,我只是得到了我调查的错误“参数“ ..1”丢失,没有默认值“,但这并没有帮助。任何帮助将是巨大的:)

loops r dataframe tibble

0
推荐指数
1
解决办法
560
查看次数

标签 统计

r ×2

dataframe ×1

for-loop ×1

function ×1

loops ×1

matrix ×1

range ×1

tibble ×1