Вопрос по r – используя «вставленное» имя внутри функции

3

У меня есть функция, которая вычисляет некоторые вещи, а затем назначает это матрице. Эта матрица получает свое имя из оператора вставки (на основе некоторых других текущих значений). Затем я хочу назначить имена матрицы на матрицу, но не знаю, как сделать понятным вставленное имя.

Вот что происходит:

function <- someComputations(labs) {
  ### bunch of computations, leading to X, Y, and Z:
  matName <- paste("rhoMat_", X, sep = "") # this yields rhoMat_15 if X equals 15
  assign(matName, Y %*% Z)
  assign(dimnames(matName), labs) # labs is a list of row labels and column labels
  return(matName)
}

Это хорошо работает, включая первый оператор присваивания, а затем ломается. Я пробовал все виды подходов, таких как eval (parse (text = matNum)), as.name (matNum), замещающий (matNum), но безрезультатно. Поскольку я не знаю фактического имени матрицы (поскольку matNum не указан), я не могу жестко закодировать имя в функцию - поэтому я застрял с именем ее символа matName. Как я могу заставить R понять, что я хочу установить dimname для матрицы rhoMat_15, а не matName?

Спасибо Питер

Ваш Ответ

1   ответ
3
dimnames(get(matName)) <- labs
Вы перепутали свои скобки. Вы пытаетесь сделатьget(matName) <- labs? Что бы попытаться позвонитьget<-, который не существует.
Спасибо, это имеет смысл. Странно, но я получаю сообщение об ошибке error in dimnames (get (matName)) & lt; - labs: не удалось найти функцию & quot; get & lt; - & quot; Что странно, так как get находится в базе. Кроме того, когда я набираю? Get, он открывает справку для get, поэтому get вообще не является неизвестным. Каким-то образом внутри функции она не найдена. Есть идеи, почему это не работает? Peter Verbeet
Нет, я пытаюсь установить dimnames объекта, созданного matName & lt; - paste (& quot; rhoMat_ & quot ;, X, sep = & quot;), где X может быть любым числом. Peter Verbeet

Похожие вопросы