2012-10-11 3 views
1

Я пытаюсь собрать заголовок для графика гистограммы в R. Название, которое я хочу получить, состоит из двух источников: сначала вектор (death.cause), определяющий, er, причину смерти, и второе поле из data.frame, в которое я индексирую, используя список, deathratecols, чтобы получить на поле.main = paste (замените (...), замените (...)) в R_hist_title

> death.cause 

> [[1]] [1] "Heart Attack" 
> 
> [[2]] [1] "Heart Failure" 
> 
> [[3]] [1] "Pneumonia" 


> deathratecols 

> [1] 11 17 23 

Я хочу, чтобы собрать как название: инфаркт (х-бар = 7.63763), где х-бар является средним значением столбца данных. Я могу заставить две части работать отдельно, как показано ниже.

> main=substitute(x, list(x=death.cause[[i]]))) # gives title "Heart Attack" 

> main=substitute(bar(X)==k, list(k=mean(outcome[, deathratecols[i] ], na.rm=TRUE ))) # gives title x-bar=7.63763 

Но мои усилия по объединению двух элементов с помощью функции paste() не удались.

? кто-то укажет на ошибку моих путей, пожалуйста,

ответ

2

Отформатируйте заголовок заранее с помощью инструкции sprintf и передайте ее main. Банальный пример:

a <- "foo" 
b <- "bar" 
title <- sprintf("This combines %s and %s", a, b) 
hist(rnorm(10), main = title) 

Возможно, что-то подобное (но может не работать, так как вы не предоставили пример для работы с):

title <- sprintf("%s, (x-bar = %s)", death.cause[[i]], mean(outcome[, deathratecols[i]]) 
+0

Примечание: используйте '% f' для форматирования цифр для среднего значения, если необходимо. – Maiasaura

+0

спасибо за ваш ответ, который дал мне стимул узнать о еще одной части R. Я не смог сделать sprintf() работать так, как мне было нужно. Однако для записи я обнаружил, что substitute() можно использовать для сборки строки почти так же, как и для вставки(), хотя и без запятой между аргументами, поэтому «code main = substitute (cod (bar (x) = = y), list (cod = death.cause [[i]], y = round (среднее (результат [, deathratecols [i]], na.rm = TRUE), 2) ' – bobox

+0

... дал мне название Я хотел, то есть CauseOfDeath (xbar = RateColumnMean) Еще раз спасибо за ваше предложение. B – bobox

0

Вы можете комбинировать замену() и вставить() как ниже:

hist(outcome[, deathratecols[i]], 
    main=substitute(paste(death.cause[[i]], "(", bar(X), "=", k, ")"), list(k=mean(outcome[, deathratecols[i]], na.rm=TRUE)))) 

Это сработало для меня.

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