Как я могу индексировать несколько столбцов во вложенном цикле? - PullRequest
0 голосов
/ 10 февраля 2019

Я изо всех сил пытаюсь выяснить, можно ли индексировать несколько столбцов в цикле.

У меня есть вложенный цикл '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"}
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...