引用R中上一行的For循环
我对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。另外,由于需要从一个元素到下一个元素进行比较,因此最好从第二个位置开始循环,因为第一个元素没有任何要比较的先前值。代码如下:
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