循环比较第一行和第二行的元素的数据框

循环比较第一行和第二行的元素的数据框

我想循环数据帧,我想比较实际行和下一行的一个元素。

例如,我有一个如下所示的数据框:

      V1       V2          V3            V4
 1   chr1      10         1000          2000 
 2   chr1      10         2000          3000
 3   chr1      10         4000          5000
 .
 .
 .

我想将第一行第四列的​​元素与第二行第三列的元素进行比较,如果它们相同,则执行某些操作,然后将第二行第四列的​​元素与第三行的元素进行比较行和第三列,做一些事情等等。

所以我正在尝试这样的事情:

for (i in 1:nrow(my_dataframe)){
 if (my_dataframe[i, 4] == my_dataframe[i+1 , 3]) {
 print("OK")
   }
 }

因此,这会给我示例数据框 1 OK

然而,看起来 R 不喜欢 i + 1,因为它给了我下一个错误:

Error in if (tabla4subset[i, 4] > tabla4subset[i + 1, 3]) { : 
missing value where TRUE/FALSE needed

有人知道该怎么做吗?

答案1

我想我知道哪个是问题所在。

i + 1 = nrow(my_dataframe) + 1 

例如,如果我的数据框有 10 行,我会尝试在最后将第 10 行与不存在的第 11 行进行比较。所以解决方案是:

for (i in 1:(nrow(my_dataframe)-1)) {
if(my_dataframe[i, 4] == my_dataframe[i + 1, 3]) {
  print("OK")
 } 
}

相关内容