r - R中的data和data.frame有什么区别?
问题描述
我知道data.frame
是一个包含不同类型列的二维矩阵。我认为data
是另一种类型的数据结构R
,可以取多个data.frame
s。
在RStudio
,现在我有两个data
:dcd
和pdb
:
我试图了解它们的属性:
> 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
我的问题是:
dcd
类似于 101 行 19851 列的矩阵吗?class(dcd)
输出"xyz"
和"matrix"
,是否意味着同时dcd
属于两者"xyz"
和"matrix"
类型?- 如何创建一个包含多个的
data
like ?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
and组合teachers
成一个data
被调用的people
,以便我可以使用people$students
or people$teachers
?
解决方案
如果您询问如何创建一个dataframe
named people
,以便您可以使用people$students
or访问人员的姓名people$teachers
,那么实现该功能的代码是:
people <- data.frame(students = students$name, teachers = teachers$name)
people$students
如果你想要一个list
,你可以创建一个列表对象,如下所示:
people2 <- as.list(c("students" = students, "teachers" = teachers))
people2$students.name
# returns [1] Cedric Fred George
看到$
列表中每个项目旁边的(美元符号)了吗?这告诉你如何访问它们。如果你愿意teachers.name
,那么print(people2$teachers.name)
会为你做到这一点。
至于你的其他问题:
- dcd 是否类似于具有 101 行和 19851 列的矩阵?
dim()
您可以使用、ncol()
或验证类似矩阵的对象的维度nrow()
。在您的情况下,是的,它有 101 行和 19851 列。
class(dcd)
输出“xyz”和“matrix”,是否意味着dcd同时属于“xyz”和“matrix”类型?
简单地说,你可以认为它继承了一个matrix
类以及xyz
. 您可能想了解R 中的类和继承。
- 如何创建像 pdb 这样包含多个 data.frame 的数据?
看看我上面的代码。people2 <- as.list(c("students" = students, "teachers" = teachers))
创建一个list
“多个”数据框。
推荐阅读
- c# - (反)将子 JSON 属性序列化为类属性
- nginx - 阻止动态 Nginx 位置
- java - 如何从Java中的多个嵌套json中获取键值
- javascript - 表单验证未显示错误消息
- html - 您如何使用 flexbox 制作 plus 布局?
- java - 如何使用 Springboot thymeleaf 添加两个数字
- python-3.x - 如何在 tensorflow 版本 2 中转换以下内容
- css - 使用 Alpha 通道获得相似的颜色
- dataweave - Data weave 2.0 中的日期转换 YYYYMMDD 到 YYYY-MM-DD
- python - 我的 Python 输出重复了数百次