Как назвать Dataframes внутри списка - PullRequest
0 голосов
/ 07 января 2020

Я создал список базовых c, и внутри этого списка с именем lista (не большая фантазия, я знаю) есть 10 маленьких фреймов данных. Каждый из этих фреймов данных называется "numberone", "numbertwo", ..., "numberten" .

Когда я присоединяюсь к этому списку, я не вижу их имен. но вывод, который я вижу в рабочей области (Rstudio), таков:

enter image description here

Ниже приведен код и мои попытки:

#creating multiple dataframes and a list and then give a title to this dataframes inside the list.

lista = list()
names = c("numberone","numbertwo","numberthree","numberfour","numberfive","numbersix","numberseven","numbereight","numbernine","numberten")

for (i in 1:10) {
  x = rnorm(10)
  df = data.frame(x)
  assign(names[i],df)
  lista[[i]] = df
}


#trying to change manually the names of the dataframes inside the "lista"  list

names(lista[1]) = "number one"
print(names(lista[1]))  #this gives no results

#trying using dput
output = dput(lista[1])

##trying put manually the name in front of the dput output to rename the first dataframe inside lista..
list('numberone'= structure(list(x = c(0.750704535096297, 1.16925878942967, 
                          0.806475114411396, 1.00973486249489, -0.301553383694518, 0.546485320708262, 
                          1.03645444095639, 0.247820396853631, -1.64294545886444, -0.216784798035195
)), class = "data.frame", row.names = c(NA, -10L)))

#this seems to have renamed the first dataframe but, it's not working anyway
lista$numberone

print(names(lista[1])) #still no results

Я перепробовал почти все, что мог, но я не могу дать этим одиночным фреймам данных их имена в списке.

Как я могу назвать эти фреймы? Спасибо

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Я думаю, вы можете использовать двойные скобки (например, [[1]]) для ссылки на элементы в вашем списке. Используя ваш пример кода, это будет работать:

names(lista[[1]]) = "number one"
print(names(lista[[1]]))  #first element is now called "number one"

Вы также можете использовать функцию setNames () в функции Map (), чтобы переименовать каждый столбец для вашего списка данных.

lista <-Map(setNames, lista , names)
lista # each column is now assigned a name from your vector called names

Чтобы сохранить ваш код максимально чистым, лучше избегать именования объектов с теми же именами, что и у функций. (В вашем примере кода используется вектор с именем «names», но также используется функция names ().)

0 голосов
/ 07 января 2020

Попробуйте сделать names(list)

Вот пример с использованием пустых списков

list_test = vector("list",4)
names(list_test) = c("A","B","C","D")
list_test

$A
NULL

$B
NULL

$C
NULL

$D
NULL

На вашем примере я сделал:

names(lista) <- names

и получаю:

names(lista)
[1] "numberone"   "numbertwo"   "numberthree" "numberfour"  "numberfive"  "numbersix"   "numberseven"
[8] "numbereight" "numbernine"  "numberten"   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...