通过R中的变量访问数据帧或矩阵

时间:2018-03-20 17:29:45

标签: r

假设我有一系列数据框或矩阵x1,x2,x3 ......等,例如

> x1
         [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7] [,8]   [,9] [,10] [,11] [,12]
V1 -0.5824644 -0.17 -0.23  0.26 -0.13 -0.25 -0.34 0.82  -1.93 -0.31 -0.40 -3.02
V2 -1.7916906 -0.16 -0.24  0.01 -0.12 -0.29 -0.38 0.68  -2.48 -0.46 -0.60 -3.62
V3  1.9726578 -0.87 -0.91  2.17 -0.79 -2.52 -1.23 5.35 -19.62  0.40  0.27 -7.86
V4 -0.5824644 -0.14 -0.19 -0.36 -0.17 -0.23 -0.32 0.40  -0.14 -0.34 -0.45 -2.85
V5 -1.7916906 -0.15 -0.20 -0.46 -0.22 -0.27 -0.34 0.93  -0.28 -0.63 -0.62 -3.65
V6  1.9726578 -0.37 -0.46 -0.46 -0.26 -1.14 -0.58 2.81  -1.05  0.39 -0.34 -5.48

> x2
         [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7] [,8]   [,9] [,10] [,11] [,12]
V1 -0.5824644 -0.19 -0.24  0.19 -0.27 -0.27 -0.40 0.76  -2.51 -0.45 -0.50 -3.80
V2 -1.7916906 -0.14 -0.21  0.06 -0.15 -0.24 -0.33 0.61  -2.06 -0.31 -0.43 -2.92
V3  1.9726578 -0.81 -0.88  2.38 -0.27 -2.12 -1.11 4.56 -14.94  1.75  0.19 -6.27
V4 -0.5824644 -0.13 -0.18 -0.21 -0.18 -0.25 -0.29 0.20  -0.30 -0.46 -0.42 -2.71
V5 -1.7916906 -0.12 -0.20 -0.37 -0.21 -0.23 -0.36 0.52  -0.28 -0.68 -0.63 -3.88
V6  1.9726578 -0.33 -0.39 -0.40 -0.28 -0.95 -0.52 2.25  -1.27  0.16 -0.23 -5.29

> x3
         [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7] [,8]   [,9] [,10] [,11] [,12]
V1 -0.5824644 -0.14 -0.22 -0.02 -0.22 -0.27 -0.35 0.56  -2.06 -0.39 -0.45 -3.32
V2 -1.7916906 -0.15 -0.20  0.08 -0.22 -0.24 -0.33 0.45  -2.19 -0.38 -0.41 -2.98
V3  1.9726578 -0.53 -0.58  1.39 -0.69 -1.23 -0.81 2.90 -11.02  0.96 -0.09 -5.30
V4 -0.5824644 -0.14 -0.19 -0.38 -0.17 -0.24 -0.31 0.43  -0.22 -0.49 -0.52 -2.96
V5 -1.7916906 -0.13 -0.22 -0.35 -0.25 -0.32 -0.43 1.01  -0.36 -0.55 -0.59 -3.71
V6  1.9726578 -0.25 -0.33 -0.33 -0.22 -0.90 -0.54 2.42   0.08 -1.19 -0.25 -4.04

我需要访问和操作不同的数据帧/矩阵,具体取决于整数变量i - 1,2,3 ......等的值。我在网上发现了许多类似的问题,但似乎所有的解决方案涉及assign,数据帧/矩阵由硬编码分配。这对我不起作用,因为我从文本文件中读取了我的数据。我也试过像

这样的东西
  

master_df = list(x1,x2,x3)

但我无法按行或列操作各个数据框。 master_df[1]返回第一个数据框,但是

master_df[1][,1]

不能工作。

在Perl或Python中,我会连接两个变量来获取第三个变量的名称。在R中,这似乎不起作用;我得到一个字符串文字。即,在Perl或Python中,我会连接' x'和1得到x1,我可以根据需要操作,但在R中我最终得到" x1"我无法做任何事情。这似乎是一个微不足道的问题,我现在可以解决一段时间,尽管广泛的谷歌搜索。我错过了什么或发生了什么事?

1 个答案:

答案 0 :(得分:3)

要索引列表,请使用双方括号([[]])。使用单方括号(data.frame)索引[]

例如:master_df[[1]][, 1]将返回列表master_df中第一个元素的第一列的所有行