如果它们的值完全相同,我想比较R中的2个数据帧。有点测试。如果df1(row1,column1)的值==与df2(row1,column1)的值完全相同,则它应在我要填充的空第3个数据帧(row1,column1)中的同一位置返回“ OK”与比较的输出测试结果。如果不是,则应在该位置返回“问题”。 secon迭代将是位置2,位置3,依此类推,直到测试通过df1和df 2的值为止。-> df1和df2具有相同的列数和相同的行数(150行和6列),df3为空,必须用输出结果填充。
我对于for循环还是很陌生,遭受了反复试验的折磨。到目前为止,我已经尝试过:作为测试数据,我使用了虹膜数据集。数据帧Iris1和Iris2应该相同。为了测试我的for循环是否工作,我在Iris2中手动更改了2个随机值。 Iris3是一个空的数据框,我想用输出testresults填充它。如您所见,我现在正在尝试使用简单的打印功能,但这并不能正常工作,这不是我在这里想要做的。我希望将输出存储在df3中。希望有人可以帮助我。预先感谢!
Iris3 <- Iris1[FALSE,]
for (i in 1:(length(Iris1))) {
for(j in 1:(length(Iris2))) {
if(Iris1[[i]] == Iris2[[i]]) {
print("OK")
}
else print("PROBLEM")
}}
不需要循环。您可以简单地比较Iris1 == Iris2
并使用结果从向量中获取值。
Iris1 <- Iris2 <- Iris3 <- iris
Iris2[1,1] <- 0
Iris2[2,2] <- 0
Iris3[] <- c("PROBLEM", "OK")[1+(Iris1 == Iris2)]
head(Iris3)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 PROBLEM OK OK OK OK
#2 OK PROBLEM OK OK OK
#3 OK OK OK OK OK
#4 OK OK OK OK OK
#5 OK OK OK OK OK
#6 OK OK OK OK OK