【发布时间】: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