【发布时间】:2020-10-16 20:56:44
【问题描述】:
我对 R 比较陌生,我正在尝试创建一个带有条件的 for 循环,该条件引用前一行的等价性。为了学习为自己的数据编写这段代码,我创建了一个更简单、有代表性的数据框:
df<- c(1,1,2,0,0,0,0,1,1,2)
我的目标是为 df 中与前一个值不同的每个值打印一个 1。对于这个 df,这应该如下所示: [1] 0,0,1,1,0,0,0,1,0,1.
这是我迄今为止尝试过的:
for(i in df){
if(x[i] != x[i-1]){
print(1)
}else{
print(0)
}
}
从上面的代码中,我一直得到错误“参数长度为零”。很可能我犯了一个简单的错误,但我感谢任何建议!
【问题讨论】:
-
试试
for(i in 2:length(df)) {...}。 -
R 是一种矢量化语言。试试这个而不是使用循环:
ifelse(df == dplyr::lag(df, default=-1), 1, 0)