我想循环数据帧,我想比较实际行和下一行的一个元素。
例如,我有一个如下所示的数据框:
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")
}
}