我试图找到一种方法来判断一系列数字是否存在于一个向量中.
我正在研究数据帧中的相关性,并且我正在使用‘for’循环来绘制所有变量对.然而,我正在试图找到一种方法来避免每一对都被绘制两次.我的 idea 是创建每列索引的序列,将它们存储在一个向量中,以便在每次绘制之前判断向量中是否已经存在该序列,如果存在,则命令循环跳过它.
这是我想要的一个例子:
假设我在数据帧‘data’中有以下变量:
Var1 | Var2 | Var3 | Var4 |
---|---|---|---|
0 | 1 | 0 | 4 |
2 | 3 | 2 | 5 |
5 | 4 | 5 | 0 |
2 | 5 | 1 | 1 |
我想要根据每个变量绘制每个变量的图,但如果我进行循环,结果将是每对变量两次,如下例所示:
for (i in 1:4){
for (j in 1:4){
if (j == i){
next
}
plot(x = DATA[,i],
y = DATA[,j],
xlab = colnames(DATA)[i],
ylab = colnames(DATA)[j])
}
}
本例为每对变量提供两次,一次使用Var1作为x,Var2作为y,第二次使用Var1作为y,Var2作为x,依此类推.
我想避免这种情况,因为在我原来的嵌套框架中有几十个变量.因此,我想创建一个具有两个索引的数字序列,存储在每个循环开始时搜索的向量中,如果找到该序列,则循环跳到下一次迭代.
我try 了以下方法,但没有奏效:
vector_test <- c(0)
for (i in 1:4){
for (j in 1:4){
test1 <- c(0,i,j,0)
test2 <- c(0,j,i,0) #to have both orders possible
if (j == i){
next
}
if (test1 %in% vector_test){
next
}
if (test2 %in% vector_test){
next
}
vector_test <- c(vector_test, test1, test2) #adding to the test vector to check in the next iteration
plot(x = Data_total_VF[,i],
y = Data_total_VF[,j],
xlab = colnames(Data_total_VF)[i],
ylab = colnames(Data_total_VF)[j])
}
}
我在"测试"的末尾和开头添加了0,以避免因向量中两个数字随机相邻而跳过.
我还try 了:
if ((test1 %in% vector_test) == TRUE{
next
}
它给我的两次错误都是:
Error in if (test1 %in% vector_test) { : the condition has length > 1
Error in if ((test1 %in% vector_test) == TRUE) { :
the condition has length > 1
我一直找不到另一个运营商,或者这个网站上的另一个例子来做这件事.
有谁有主意吗?
非常感谢.