В чем разница между данными и data.frame в R? - PullRequest
0 голосов
/ 28 апреля 2018

Я знаю data.frame - это двумерная матрица со столбцами разных типов. Я думаю, data - это другой тип структуры данных в R, который может принимать несколько data.frame с.

В RStudio, теперь у меня есть два data: dcd и pdb:

enter image description here

Я пытался понять их свойства:

> dcd

   Total Frames#: 101
   Total XYZs#:   19851,  (Atoms#:  6617)

    [1]  65.59  84.65  90.92  <...>  59.76  55.48  83.68  [2004951] 

+ attr: Matrix DIM = 101 x 19851

> class(dcd)
[1] "xyz"    "matrix"

> dcd$xyz
Error in dcd$xyz : $ operator is invalid for atomic vectors

> pdb

 Call:  read.pdb(file = pdbfile)

   Total Models#: 1
     Total Atoms#: 6598,  XYZs#: 19794  Chains#: 2  (values: L H)

     Protein Atoms#: 6598  (residues/Calpha atoms#: 442)
     Nucleic acid Atoms#: 0  (residues/phosphate atoms#: 0)

     Non-protein/nucleic Atoms#: 0  (residues: 0)
     Non-protein/nucleic resid values: [ none ]

   Protein sequence:
      DIQMTQSPSSLSASVGDRVTITCKASQNVRTVVAWYQQKPGKAPKTLIYLASNRHTGVPS
      RFSGSGSGTDFTLTISSLQPEDFATYFCLQHWSYPLTFGQGTKVEIKRTVAAPSVFIFPP
      SDEQLKSGTASVVCLLNNFYPREAKVQWKVDNALQSGNSQESVTEQDSKDSTYSLSSTLT
      LSKADYEKHKVYACEVTHQGLSSPVTKSFNRGECEVQLVESGGGL...<cut>...TSAA

+ attr: atom, xyz, calpha, call

> class(pdb)
[1] "pdb" "sse"

> pdb$xyz

   Total Frames#: 1
   Total XYZs#:   19794,  (Atoms#:  6598)

    [1]  24.33  14.711  -3.854  <...>  -34.374  -6.315  14.986  [19794] 

+ attr: Matrix DIM = 1 x 19794

Мои вопросы:

  1. Похоже ли dcd на матрицу с 101 строкой и 19851 столбцом?
  2. class(dcd) выводит "xyz" и "matrix", означает ли это, что dcd одновременно принадлежит к типам "xyz" и "matrix"?
  3. Как я могу создать data как pdb, который включает несколько data.frame?

например. если у меня есть

students <- data.frame(c("Cedric","Fred","George"),c(3,2,2))
names(students) <- c("name", "year")
teachers <- data.frame(c("John","Alice","Mike"),c(6,9,5))
names(teachers) <- c("name", "year")

как я могу объединить students и teachers в data под названием people, чтобы я мог использовать people$students или people$teachers?

1 Ответ

0 голосов
/ 28 апреля 2018

Если вы спрашиваете, как создать dataframe с именем people, чтобы вы могли получить доступ к именам людей, используя people$students или people$teachers, то код для этого:

people <- data.frame(students = students$name, teachers = teachers$name)
people$students

people будет кадром данных, который выглядит следующим образом: enter image description here

Если вы хотите list, вы можете создать объект списка следующим образом:

people2 <- as.list(c("students" = students, "teachers" = teachers))
people2$students.name
# returns [1] Cedric Fred   George

И people2 будет список: enter image description here

См. $ (знак доллара) рядом с каждым элементом в списке? Это говорит вам, как получить к ним доступ. Если вы хотели teachers.name, то print(people2$teachers.name) сделает это за вас.

Что касается других ваших вопросов:

  1. Похоже ли dcd на матрицу с 101 строкой и 19851 столбцом?

Вы можете проверить размерность матричного объекта, используя dim(), ncol() или nrow(). В вашем случае да, это 101 строка и 19851 столбец.

  1. class(dcd) выводит "xyz" и "matrix", означает ли это, что dcd одновременно принадлежит к типам "xyz" и "matrix"?

Проще говоря, вы можете думать о том, что он наследует класс matrix, а также xyz. Вы можете прочитать о классах и наследовании в R .

  1. Как я могу создать такие данные, как pdb, которые включают несколько data.frame?

Посмотрите на мой код выше. people2 <- as.list(c("students" = students, "teachers" = teachers)) создает list «нескольких» фреймов данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...