Таким образом, у меня нет доступа к набору данных, так что мне пришлось придумать простой пример.
x1<-rnorm(100,mean=0,sd=10)
x2<-rep(0,100)
x3<-rep(1,100)
df<-data.frame(x1,x2,x3)
summary(df$x2)
#overwrite x2 for values of x1 less than 3
df$x2[ which(df$x1 < 3) ] <- 1
summary(df$x2)
summary(df$x3)
#overwrite x3 for values of x1 >= 3
df$x3[ which(df$x1 >= 3) ] <- 0
summary(df$x3)
Вы заметите, что у нас есть кадр данных с 3 переменными. x1 - случайная величина, а x2 и x3 - номинализация x1 (x2 должно быть 1, если x1 < 3 и x3 должно быть 0, если x1> = 3). Когда я запустил это, вы заметите, что использование инструкции позволяет выборочно перезаписывать значения, поскольку возвращает индексы, которые необходимо перезаписать.
> x1<-rnorm(100,mean=0,sd=10)
> x2<-rep(0,100)
> x3<-rep(1,100)
>
> df<-data.frame(x1,x2,x3)
>
> summary(df$x2)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0 0 0 0 0 0
>
> #overwrite x2 for values of x1 less than 3
> df$x2[ which(df$x1 < 3) ] <- 1
>
> summary(df$x2)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.00 0.00 1.00 0.58 1.00 1.00
>
> summary(df$x3)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1 1 1 1 1 1
> #overwrite x3 for values of x1 >= 3
> df$x3[ which(df$x1 >= 3) ] <- 1
>
> summary(df$x3)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1 1 1 1 1 1
> x1<-rnorm(100,mean=0,sd=10)
> x2<-rep(0,100)
> x3<-rep(1,100)
>
> df<-data.frame(x1,x2,x3)
>
> summary(df$x2)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0 0 0 0 0 0
>
> #overwrite x2 for values of x1 less than 3
> df$x2[ which(df$x1 < 3) ] <- 1
>
> summary(df$x2)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.00 0.00 1.00 0.63 1.00 1.00
>
> summary(df$x3)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1 1 1 1 1 1
> #overwrite x3 for values of x1 >= 3
> df$x3[ which(df$x1 >= 3) ] <- 0
>
> summary(df$x3)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.00 0.00 1.00 0.63 1.00 1.00
В будущем, пожалуйста, отправьте образец своих данных, чтобы другие могли легче воспроизвести вашу ошибку. Чтобы ответить на ваш вопрос, для этого вам не нужен цикл 'for', я думаю, что-то вроде' Место проведения [, 9] <- ifelse (место проведения [, 7] <= 5, место проведения [, 4], место проведения [ , 9]) 'должен работать нормально. – nrussell