引用R中上一行的For循环

引用R中上一行的For循环,r,for-loop,R,For Loop,我对R比较陌生,正在尝试使用引用前一行的条件来创建一个for循环,以实现等价性。为了学习为自己的数据编写此代码,我创建了一个更简单、更具代表性的数据框架: df<- c(1,1,2,0,0,0,0,1,1,2) 从上面的代码中,我始终得到错误“参数的长度为零”。很可能是我犯了一个简单的错误,但我很感激任何建议 试试这个。您正在使用不存在的x。而是在循环内使用df。另外,由于需要从一个元素到下一个元素进行比较,因此最好从第二个位置开始循环,因为第一个元素没有任何要比较的先前值。代码如下:

我对R比较陌生,正在尝试使用引用前一行的条件来创建一个for循环,以实现等价性。为了学习为自己的数据编写此代码,我创建了一个更简单、更具代表性的数据框架:

df<- c(1,1,2,0,0,0,0,1,1,2)

从上面的代码中,我始终得到错误“参数的长度为零”。很可能是我犯了一个简单的错误,但我很感激任何建议

试试这个。您正在使用不存在的
x
。而是在循环内使用
df
。另外,由于需要从一个元素到下一个元素进行比较,因此最好从第二个位置开始循环,因为第一个元素没有任何要比较的先前值。代码如下:

#Data
df<- c(1,1,2,0,0,0,0,1,1,2)
#Loop
for(i in 2:length(df)){
  if(df[i] != df[i-1]){
    print(1)
  }else{
    print(0)
  }
}

尝试
for(i in 2:length(df)){…}
。R是一种矢量化语言。试着这样做,而不是使用循环:
ifelse(df==dplyr::lag(df,default=-1),1,0)
#Data
df<- c(1,1,2,0,0,0,0,1,1,2)
#Loop
for(i in 2:length(df)){
  if(df[i] != df[i-1]){
    print(1)
  }else{
    print(0)
  }
}
[1] 0
[1] 1
[1] 1
[1] 0
[1] 0
[1] 0
[1] 1
[1] 0
[1] 1