R:For循环仅在手动执行时有效

R:For循环仅在手动执行时有效,r,loops,R,Loops,所以我有一个数据框,有四个数字列a,B,C和D 现在,我编写了一个for循环,在满足某些条件时逐行更改值 但是什么也没发生!如果我手动设置k=1,k=2,k=3,并手动运行循环中的两个If函数,它就会工作!这对我来说像个虫子 for (k in nrow(list)) { if(list$A[k]>list$C[k]) {list$C[k]=list$A[k]} if(list$B[k]<list$D[k]) {list$D[k]=list$B[k]} } list 应

所以我有一个数据框,有四个数字列a,B,C和D

现在,我编写了一个for循环,在满足某些条件时逐行更改值

但是什么也没发生!如果我手动设置k=1,k=2,k=3,并手动运行循环中的两个If函数,它就会工作!这对我来说像个虫子

for (k in nrow(list)) {

if(list$A[k]>list$C[k]) {list$C[k]=list$A[k]}
  
if(list$B[k]<list$D[k]) {list$D[k]=list$B[k]}

}

list
应该成为


A          B           C           D
195679832  197768053   195679832  197500000
195679832  197768053   197500001  197768053
227573015  228592110   227573015  228592110
64199445   65230121    64199445   65000000
64199445   65230121    65000001   65230121

再次:当我手动增加k并一个接一个地运行循环的内容时,它工作得很好,但是如果我作为一个整体运行循环,它将不再执行if子句。它也不会给出错误消息。

您放弃了
1:
之前的
nrow(list)
<代码>k只接收到4,而不是1:4

for (k in 1:nrow(list)) {

if(list$A[k]>list$C[k]) {list$C[k]=list$A[k]}
  
if(list$B[k]<list$D[k]) {list$D[k]=list$B[k]}

}

list
for(k/1:nrow(列表)){
如果(list$A[k]>list$C[k]){list$C[k]=list$A[k]}
如果(list$B[k],那么它应该是(k在seq_len(nrow(list))中的
。假设您的
列表确实是一个数据帧。
for (k in 1:nrow(list)) {

if(list$A[k]>list$C[k]) {list$C[k]=list$A[k]}
  
if(list$B[k]<list$D[k]) {list$D[k]=list$B[k]}

}

list