2016-10-20 3 views
-1

Я получил этот код:R: преобразование скалярных векторов в один вектор

n<-5 

for (i in 1:n) { 
    for (k in 1:n) { 
     print (i-k) 
    } 
} 

Таким образом, результаты являются скалярными векторами. Но мне нужно, чтобы получить один вектор со всеми результатами в нем, как это:

[1] 0 -1 -2 -3 -4 1 0 -1 -2 

т.д. Как я могу получить? Попытка unlist(), но не успех.

+2

Как вы пытаетесь unlist? 'unlist (lapply (1: n," - ", 1: n))' является опцией –

+0

Я не уверен, что правильно его пытаюсь – massa

ответ

1

Попробуйте векторизованную:

n <- 5 
as.vector(t(outer(1:n,1:n,'-'))) 
#[1] 0 -1 -2 -3 -4 1 0 -1 -2 -3 2 1 0 -1 -2 3 2 1 0 -1 4 3 2 1 0 

ИЛИ

as.vector(sapply(1:n, function(i) i-(1:n))) 

ИЛИ

as.vector(sapply(1:n,'-',1:n)) 
+1

Большое спасибо! Короче tnan моя и это работает) – massa

0

что-то вроде этого? Ваш результат будет a ...

n <- 5 
a <- c() 
for(i in 1:n) { 
    for(k in 1:n) { 
    print (i-k) 
    a <- c(a, i-k) 
    } 
} 
+0

Но результат такой же, как у меня. Мне нужен результат, как в первом комментарии. – massa

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