2016-07-23 4 views
-2

Я пытаюсь выполнить цикл над числовым вектором. Как мне это сделать? Обычно в цикле for начинается цикл с for(i in 1:z). Тем не менее, я хочу что-то вроде for(i in vector). Например, см ниже:R: Зацикливание элементов элементарного вектора без векторизации

x <- c(839898, 3, 9) 
for (i in x) { print(i) } 

# Desired output 
839898 
3 
9 

В данном случае, я не хочу vectorize этого, как я пытаюсь узнать, как это сделать с for цикла.

Хотя этот пост похож на многие другие, почти у всех других я видел только векторизованные решения, потому что кто-то пытался выполнить задачу с минимальным временем выполнения, а не узнать, как работают петли.

+3

Ваш пример работает, я понятия не имею, что еще вы хотите. –

+2

AFAIK с использованием функции 'apply' не векторизован. Я подозреваю, что в любом решении ниже R будет использовать цикл внутри в какой-то момент (это будет для 'apply'). –

+2

Это сработало и для меня. Есть ли причина, по которой вы не хотите работать в стандартных принципах R и векторизовать вещи? Петли обычно не являются хорошей практикой в ​​R. – Vedda

ответ

2

Я считаю, что вы делаете опечатку выше, и вы хотите напечатать i вместо печати x. Вот казнь в RStudio.

Screenshot of Code Execution in RStudio

1

Вам нужно это:

for (i in seq_along(x)) { 
    print(x[i]) 
} 

Вы печатаете x непосредственно, которая определяется глобальной окружающей среды. Вы хотите напечатать i-й элемент в x в цикле for

+0

Спасибо! Это была опечатка. – user3614648

Смежные вопросы