我真的是R的新手。将不胜感激。

我有很多文件,需要将它们合并为一个数据帧,然后获取第2列或第3列的均值。我已经尝试过,但是我感觉自己犯了一些愚蠢的错误,或者可能是完全错误的。

polmean <- function(directory, pol, id = 1:3) {
     Dataframe <- function (id) {
             Filenames <- list.files (pattern = "*.csv")
             Reqfiles <- Filenames [id]
             LoadReqfiles <- lapply(Reqfiles, read.csv)
             }
     x <- Dataframe (id)
     Colomnmeans <- function (pol, removeNA = TRUE) {             
             means <- 0
             if (pol == "sulfate") {
             means <- mean (x[,2], na.rm = removeNA)
             } else {
             means <- mean (x[,3], na.rm = removeNA)
             }
              means
             }
     Colomnmeans (pol, removeNA = TRUE)
     }     

这给我一个错误:x [,2]不正确的尺寸数。

谢谢

===============>>#1 票数:1

您在这里犯了几个错误。 错误#1:函数Dataframe没有返回值。 错误消息2:使用lapply ,结果是一个列表。 因此, x是数据帧的list (而不是?data.frame )。 因此,您将无法访问数据框列表的不同列。 您必须遍历数据帧。

所以试试这个:

polmean <- function(directory, pol, id = 1:3) {
  Dataframe <- function (id) {
    Filenames <- list.files(directory,pattern=".csv",full.names=TRUE)
    Reqfiles <- Filenames[id]
    LoadReqfiles <- lapply(Reqfiles, read.csv)
    return(LoadReqfiles)  # Mistake1: Need to return the value
  }
  x <- Dataframe(id)
  Colomnmeans <- function (pol, removeNA = TRUE) {             
    means <- NULL
    if (pol == "sulfate") {
      for(i in 1:length(x)) means <- c(means,x[[i]][,2])      
    } else {
      for(i in 1:length(x)) means <- c(means,x[[i]][,3])
    }
    mean(means, na.rm = TRUE)
  }
  Colomnmeans(pol, removeNA = TRUE)
}     

请注意,在上面的代码中,我将初始化值用作NULL ,这是一个零长度的向量。 尝试:

length(NULL)

因此,与使用初始化值0相比,这不会影响mean函数。

希望这可以帮助!!

  ask by user3552857 translate from so

未解决问题?本站智能推荐:

1回复

如何使用Apply而不是Loop从不同目录中的文件获取平均值

我已经使用for循环在'R'中编写了一些代码,但是想知道是否有人知道更好的r'apply'类型的方式吗? 我将在下面介绍我的“循环”解决方案。 目的-我有许多表(名称相同)存储在为当前月份,上个月以及之前的月份命名的目录中。 它们存储在名为“ m1”的目录中。 我需要计算这些表中列的
2回复

汇总在R的列表中

我希望在数据帧列表中找到值的平均值。 每个数据框(有70个东西)都有一个日期和值列表。 我想找到每个日期的值的平均值。 这是一个片段。 Dataframe名为Quantimodo 。 接下来我该怎么办? 根据我的想法,我有每个Variable.Name的列表。 我想找
1回复

如何使用lapply获取列表中所有数据框中特定列的均值?

我有一个包含160个数据框的列表,所有数据框都具有相同的结构。 每个数据框对应一个国家 每个数据框的结构如下: 如何获取列表中每个数据框的“值”列的平均值。 我尝试使用lapply函数,但无法弄清楚如何正确执行它。 这不起作用: 还是将所有数据框合并为一个大数据框,
2回复

r中不同数据帧的列的平均值

现在想要的是将来自df1和df2的val1的值组合为平均值,即df1$val1 。 例如: df1$val1应该如下
1回复

计算所有数值列的绝对值的平均值

我想为示例数据集DT计算所有数字列的绝对值的平均值: 我尝试按以下方式计算均值和绝对均值: 但是,绝对差额的收入平均值为负(与正常平均值相同),这显然是不可能的。 如果看我的代码,我不明白我在做什么错。 我在俯视什么?
2回复

数据帧中的向量平均值

我正在尝试创建一个新的数据帧,它是一系列向量的浓缩版本。 而我的数据就是这样的 我想实现 result_df喜欢 当我尝试for循环时遇到麻烦,有没有办法lapply()或apply()可以原生地执行此操作? 有更简单的解决方案吗?
1回复

data.frame中的5个列表获取均值,sd,移除的异常值

我有5个列表的data.frame 每个列表都有3列: T_C是TEST或CONTROL的指标 ID,T_C,SPEND 我知道如何使用lapply获得T或C的均值,但是如何使用多个列表呢? ?? 对于一个列表,我可以做到吗? 我在学习 :-)
1回复

使用mapply计算多个列表的平均值

数据集 我试图用mapply计算多个列表的平均值。 它没有用,因为mean只是平均它的第一个参数,因为在矩阵上使用mapply和mean函数 这工作正常: 然后,我尝试使用lapply提供一个列表来进行mapply 输出不是平均值,而是单个列表 我需要
1回复

如何计算一个变量(销售额)相对于另一个变量(id)的均值?

我有一个数据集,看起来像这样: 数据集中约有65k观测值。 数据分为4列:id(在10到8000万之间不连续),客户流失,日期和销售。 它描述了所有客户每年大约3/4的支出。 现在,我将计算每个客户的平均支出。 我收到了以下代码: 现在我有一个问题,即r不知道.SD。
1回复

根据多个CSV文件中的行和列条件计算平均值,并删除NA数据

我正在处理300多个csv文件中的数据。 每个csv文件中的变量列名称均相同。 我使用rbind和loop将列堆叠到一个空的数据框中。 我想计算一列的平均值,但是在执行此操作之前,我需要根据另一列中的值(1)进行子集或隔离。 例: 考虑以下称为dfABC()的数据帧 我