Я пытаюсь заполнить набор матриц , где имена матриц (объектов) хранятся в списке. Я могу использовать get() для возврата объекта с заданным именем, но я , столкнувшись с проблемами функции, когда я использую get() для определения матрицы объекта, который я пытаюсь заполнить.Ошибка функции R get()
#Create list of matrix names:
list.names <- c("m.1")
#Create matrix object
m.1 <- matrix(nrow=2,ncol=2)
#Return matrix m.1 from the list.names using get(). Works great!
get(list.names[1])
#Populate m.1 with some values. Doesn't work.
get(list.names[1]) <- c(1,2,3,4)
Таким образом, в последней строке кода, я получаю сообщение об ошибке:
не смог найти функцию «получить < -»
Точно так же, я могу назвать М.1 с помощью:
eval(as.name(list.name[1]))
Но R возвращает аналогичную ошибку «не удалось найти функцию», когда я пытаюсь заполнить матрицу.
Может ли кто-нибудь объяснить ошибку в моем подходе, здесь?
Edit/Update:
Таким образом, в моей попытке упростить этот вопрос для размещения здесь, я понял, что, возможно, упрощенно, что я пытаюсь сделать.
Итак, я пытаюсь заполнить элементы в наборе матриц. Имена матриц содержатся в объекте list.names. Я использую вложенные петли for() для заполнения каждого элемента в матрицах.
Таким образом, на самом деле, моя проблема была бы более точно сформулировать:
get(list.names[1])[1,1] <- some_value
Несколько ответов предположили, что я использую назначить основанный на моей должности, но, учитывая, что я attemping к «присваивать» элемент внутри объекта, а не весь объект, этот подход не будет работать.
Извините за путаницу.
Я думаю, вы хотите «присваивать» как в 'assign (get (list.names [1]), 1: 4)'. Я не могу объяснить специфику, но объяснение может звучать примерно так: объект, возвращаемый с 'get'doesn't, имеет назначение (' <-'), что и указывает на ошибку.Все с оговоркой, что вы почти никогда не нуждаетесь в подобной гимнастике для достижения аналогичного результата. Расширение этого в другом вопросе может дать некоторые лучшие ответы, понимание и код. – Justin
@ Justin Не совсем. Это 'get()', у которого нет функции присваивания, а не объекта, возвращаемого 'get()'. По сути, нет функции '' get <- '() 'и, следовательно, ошибки. Это синтаксический анализатор, который видит такую конструкцию и преобразует ее в вызов '' get <- '(x = list.names [1], value = c (1,2,3,4)) 'еще до того, оценивает аргументы и, следовательно, ошибку о том, что не существует функции '' get <- "'. –