Я изо всех сил пытаюсь выяснить, можно ли индексировать несколько столбцов в цикле.
У меня есть вложенный цикл 'for', в котором я присваиваю значение новому столбцу в фрейме данных.на основе значений в других столбцах.
Фрейм данных большой (более 80 000 наблюдений более 6000 переменных), и для одного из вложенных циклов я хотел бы просмотреть индекс столбцов (т. е. данные[, 46: 6000])
Пока я пробовал:
# create example dataset:
id <- c(1,2,3,4,5,6,7,8,9,10)
capital1 <- replicate(1,sample(0:100,10,rep=TRUE))
capital2 <- replicate(1,sample(0:100,10,rep=TRUE))
capital3 <- replicate(1,sample(0:100,10,rep=TRUE))
capital4 <- replicate(1,sample(0:100,10,rep=TRUE))
capital5 <- replicate(1,sample(0:100,10,rep=TRUE))
capital6 <- replicate(1,sample(0:100,10,rep=TRUE))
capital7 <- replicate(1,sample(0:100,10,rep=TRUE))
capital8 <- replicate(1,sample(0:100,10,rep=TRUE))
capital9 <- replicate(1,sample(0:100,10,rep=TRUE))
capital10 <- replicate(1,sample(0:100,10,rep=TRUE))
data <- data.frame(id, capital1, capital2, capital3, capital4,
capital5, capital6, capital7, capital8, capital9, capital10)
# create new column to populate with results of loop
nrows<-length(data[,1])
AFT<-rep("N_A",nrows)
# loop through an index of columns
for (i in c(1:nrows)) {
if(AFT[i] == "N_A"){
if(data[,6:10] >= 50){
AFT[i] <- "aft.multi"}
}
}
Я пытаюсь присвоить 'AFT' для 'aft.multi' везде, где значение каждого изотдельные переменные в столбцах 6:10 больше или равны 50. Я хочу сделать это, потому что в моих реальных данных мне нужно просмотреть огромное количество столбцов, например [, 40: 6000].
Когда я запустил код, я получил предупреждения «условие имеет длину больше 1, и будет использоваться только первый элемент», что не похоже на индекс?
Буду признателен за любые советы погде я могу пойти не так.
Я понимаю, что мне может понадобитьсяиспользуйте идентификатор строки тоже, но я не уверен, где это разместить.Например, в других циклах в следующем у меня есть рабочий код, подобный этому:
for (i in c(1:nrows)) {
if(AFT[i] == "N_A"){
if(data$capital1[i] >= 60){
AFT[i] <- "aft.productive"}
}
}