【问题标题】:How to create a nested for loop using dataframe and vector as 2 sets of values?如何使用数据框和向量作为两组值创建嵌套 for 循环?
【发布时间】:2021-11-29 16:01:24
【问题描述】:

这里我有 6 列,每列有 3 个值,所以 3 行

 ob1 <- rep(1,3)
 ob2 <- rep(2,3)
 ob3 <-rep(3,3)
 ob4 <- rep(4,3)
 ob5 <- rep(5,3)
 ob6 <- rep(6,3)

 df <- data.frame(ob1,ob2,ob3,ob4,ob5,ob6)

 df
  ob1 ob2 ob3 ob4 ob5 ob6
   1   1   2   3   4   5   6
   2   1   2   3   4   5   6
   3   1   2   3   4   5   6

这个值向量的长度总是等于 DF 中的行数

  value <- c(1.9,2.3,4.5)

我希望能够遍历 DF 行和值索引(i 和 j),因此我不必多次手动创建测试(在本例中,针对 3 行)

df[1,] 指定行,value[1] 是向量中的第一个元素,因此它们的长度匹配

 test <- sum((df[1,]-value[1])**2) / 6
 test
 5.4766

应该有 3 个测试值,因为 3 行,我该如何循环?

【问题讨论】:

  • É só rowSums(df - value).
  • 我将上面的公式改一下,但是公式会比简单的和更复杂
  • 没关系,我只是将公式添加到 rowSums 并进行了一些操作,这正是我所需要的。感谢您告知我有关此功能的信息!
  • 好的,但我刚刚意识到我已经用葡萄牙语发布了我的原始comment(我同时在 pt.SO 上)。只有rowSums(df - value)rowSums((df - value)**2)/6。这是有效的,因为在 R 向量中是 column 向量,公式从第一个 col 中减去 value,然后从第二个 col 中减去,等等。你说 length(value) 总是等于 nrow(df)所以它应该总是有效的。
  • 是的,这就是我自己做的。谢谢你,我总是忘记 R 中的基本函数非常有用。

标签: r loops dplyr nested-loops data-manipulation


【解决方案1】:

使用@Rui Barradas 的想法你可以这样做:

rowMeans((df - value)^2)
[1] 5.476667 4.356667 3.916667

【讨论】:

  • 是的,在 Rui 提到 rowMeans 函数之后,我自己做了这件事。谢谢!
猜你喜欢
  • 2011-12-15
  • 2017-10-15
  • 2021-12-08
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多