2015-11-21 2 views
1

Я хочу объединить два вектора в R в совершенно новом формате. У меня есть два векторарасчесывание двух векторов в R в совершенно другом стиле

a<-1:5 

b<-11:15 

Я хочу создать новый вектор, который содержит как a, так и b, но не в непрерывном формате. Я хочу этот новый вектор в формате (ключ, значение). позвольте называть его 'd'.

(1,11) (2,12) (3,13) (4,14) (5,15) 

и всякий раз, когда я попытался вызвать первый элемент этого я хочу (1,11) в ответ и так далее для остальных элементов.

Кроме того, если удастся решить эту проблему, пожалуйста, скажите мне, как я могу участок мое решение, где я могу построить как 1, как нижний крайний и 11 в качестве высшей крайней точки на одной горизонтальной линии, как

1..........................11 

    2...........................12 

    3............................13 

     4.............................14 

     5..............................15 
+1

Не ясно. Если вы просто попробуете «plot (a, b)», вы нарисуете точки, которые вам кажутся нужными. Если вам нужен только вектор с переменными значениями, попробуйте 'c (rbind (a, b))'. Если вы хотите «матрицу», попробуйте «cbind (a, b)». Если вы хотите, чтобы именованный вектор, 'setNames (b, a)', возможно, вы хотите. – nicola

+1

, если вы больше ищете список 'setNames (as.list (b), a)' –

+0

@nicola, пожалуйста, ознакомьтесь с обновленной версией проблемы. Надеюсь, вы сможете получить то, что я хочу. – learner

ответ

1

Я думаю, что вы ищете список? Я перечислил некоторые идеи, которые могли бы решить вашу проблему. Возможно, вы можете задать свои вопросы на основе этого ответа.

a<-1:5 
b<-11:15 

# create a list 
list = vector(5, mode = "list") 
for(index in 1:length(a)){ 
    list[[index]] = c(a[index], b[index]) 
} 
list 
unlist(list) 
plot(unlist(list)) 
plot(a,b) 
+0

Список не совсем то, что я ищу. но может быть несколько схож с этим. – learner

1

вы можете использовать mapply:

pairs <- mapply(c,a,b, SIMPLIFY = F) 

участок (а, б) работает как @nicola упоминалось в комментарии. Если вы хотите построить значения (б) в отношении ключа (а), то:

barplot(height = b,names.arg = a) 
+0

несколько близко, но не совсем то же самое. Список чтения становится сложным для больших данных. Пожалуйста, скажите мне еще одну альтернативу. Я думаю о том, что мое решение выглядит как вектор с парными значениями вектора a и вектора b. – learner

+0

'pairs [[1]]' дает 1,11 & 'pairs [[2]]' дает 2,12 и так далее. это то, что вам нужно? – vdep

+0

[1] (1,11) (2,12) (3,13) (4,14) (5,15) – learner

1

Вы можете взглянуть на Intervals()

library(intervals) 
p <- Intervals(t(mapply(c,a,b))) 
plot(p) 

Что дает:

enter image description here