#r #loops
#r #петли
Вопрос:
Я пытаюсь выполнить цикл по десятичной системе счисления от 0,1 до 0,5, где приращение равно 0,05. Мне удалось распечатать результат с помощью приведенных ниже кодов, но я хотел бы сохранить результаты во фрейме данных.
s <- seq(0.1,0.5, by = 0.05 )
for (i in s) {
print(data$ABC >= i)
}
Я попробовал этот код, чтобы попытаться сохранить результаты, но я получил таблицу с надписью «В таблице нет данных». Как я могу это исправить? Спасибо.
s <- seq(0.1,0.5, by = 0.05 )
test <- vector("numeric")
for (i in s) {
test[i] <- (data$ABC >=i)
}
View(test)
Ответ №1:
Вы можете сохранить результаты в списке, а затем связать их для объединения.
result <- vector('list', length(s))
for (i in seq_along(s)) {
result[[i]] <- data$ABC >= s[i]
}
result1 <- do.call(cbind, result)
Однако вы также можете сделать это с sapply
помощью, которая будет короче.
result <- sapply(s, function(x) data$ABC >= x)
Комментарии:
1. Спасибо, что работает, можно ли переименовать мой столбец с помощью i?
2.Я попробовал приведенный ниже код, чтобы добавить i к имени моего столбца, но, похоже, я не могу получить желаемый результат.
s <- seq(10,20, by = 1 )
result1 <- vector('list', length(s))
for (i in seq_along(s)) {
result1[[i]] <- (allcrisis[,2:1081] >= s[i])
for (i in colnames(result1)) {
paste(colnames,i, sep = "_")
}
}
result2 <- do.call(cbind,result1)
3. Вам не нужно писать два
for
цикла. Скопируйте мой код как есть. После того, как вы сделаетеresult1 <- do.call(cbind, result)
этоcolnames(result1) <- paste(colnames(result), s, sep = '_')
. Извините, я написалi
по ошибке в своем предыдущем комментарии.4. Спасибо, с помощью этого кода мне удалось изменить свой столбец на A_1, B_2, A_1, B_2, но возможно ли получить A_1, B_1 и A_2, B_2?
5. Я вижу, что вы задали новый вопрос для этого и получили удовлетворительный ответ.