Измените среду randomNames для добавления / удаления имен

#r #class

#r #класс

Вопрос:

randomNames Пакет в R можно использовать для генерации случайных имен и фамилий. Существует environment вызываемый randomNamesData , который загружается вместе с пакетом и randomNamesData содержит

 > randomNamesData
<environment: 0x11db12078>
  

Аналогичный вывод для str(randomNamesData) и dput(randomNamesData) .

если вы проверите это randomNamesData с View помощью, вы получите следующее:

 > View(randomNamesData)
  

Просмотр данных randomNamesData

Объекты в каждом из этих объектов (например, first_names_e1_g0 ) имеют тип array .

Возможно ли изменить randomNamesData среду, чтобы добавить больше имен? Если это возможно, как добавить / удалить имена в нее?

Комментарии:

1. Среды по большей части ведут себя как списки. Можете ли вы получить доступ к элементам в среде с помощью таких инструкций, как randomNamesData$first_names_e1_g0 ?

2. Да, я могу получить доступ randomNamesData$first_names_e1_g0 , однако, если я попытаюсь добавить к ней, введя assign(randomNamesData$first_names_e1_g0, "hello") , я получу сообщение об ошибке

3. Почему бы просто не randomNamesData$first_names_e1_g0 <- [some value] ?

4. @jdobres Это перезапишет все имена и заменит их только одним введенным именем (или вектором имен).

5. Я не знаю вашей точной цели, но вы должны быть в состоянии сделать что-то вроде tmp <- randomNamesData$first_names_e1_g0 , затем внести любые изменения, которые вы хотите tmp , а затем randomNamesData$first_names_e1_g0 <- tmp .

Ответ №1:

Я не совсем понимаю, какие именно изменения вы хотите внести, но поскольку среды ведут себя как списки, должна быть возможность перенести интересующие данные во временную переменную, изменить эту переменную, а затем заменить исходную:

 tmp <- randomNamesData$first_names_e1_g0

[make changes to tmp]

randomNamesData$first_names_e1_g0 <- tmp
  

Комментарии:

1. Спасибо, это помогло. Однако пришлось проделать дополнительную работу из-за характера среды и способа доступа к значениям. Сначала это temp = object , затем df.new = runif(n) ; names(df.new) = vec_n_names ; и, наконец temp = append(temp, df.new)