【问题标题】:Trouble combining columns into one vector无法将列组合成一个向量
【发布时间】:2019-06-07 00:01:11
【问题描述】:

我正在尝试将 n 个 csv 表中的相同命名列组合成一个向量,然后我可以求出向量的平均值并获得一个值。

相反,我似乎得到了一个数字向量的向量(我们称之为 Lo)。因此,当我在 Lo 上调用 mean 函数时,我会得到每个列的均值。

下面是(1)中描述的响应代码

p <- list.files(getwd(), full.names = TRUE)[1:10] 
Re <- c()

for(i in p) {
  Lo <- read.csv(i, header = TRUE)
  Zo <- na.omit(Lo$sulfate)
  An <- c(Re, Zo)
  print(mean(An)
}

我没有收到错误消息。我应该只得到一个平均值,#但是我得到了每张纸的 $sulfate 列的平均值。

#[1] 3.880701
#[1] 4.460811
#[1] 4.327613
#[1] 4.214956
#[1] 4.210072
#[1] 4.102132
#[1] 3.820059
#[1] 4.781354
#[1] 3.645644
#[1] 0.6243649

【问题讨论】:

  • 您正在打印循环内的平均值。所以它会打印第 i 项的平均值,然后转到下一个第 i 项,打印平均值,然后转到下一个,以此类推。如果我理解正确的话,您需要将中间均值存储在一个列表中,然后在循环之外计算总体均值。

标签: r for-loop vector multiple-columns


【解决方案1】:

不完全确定这是您正在寻找的东西,但类似这样的东西?

p <- list.files(getwd(), full.names = TRUE)[1:10]
Re <- c()
vector_list <- list()
for(i in p) {
    Lo <- read.csv(i, header = TRUE)
    Zo <- na.omit(Lo$sulfate)
    An <- c(Re, Zo)
    vector_list[[i]] <- An
    }

mean(unlist(vector_list))

【讨论】:

  • 它只返回一个值,但该值不正确。它采用每列平均值的平均值,而不是将列合并为一个并对所有这些值求平均值。
  • 不客气,如果您满意,请采纳答案:)
猜你喜欢
  • 2013-03-09
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 2017-10-25
  • 2013-02-20
  • 2017-11-30
相关资源
最近更新 更多