子集化数据帧列表的元素

时间:2015-12-20 14:08:48

标签: r

我有f这是3个数据帧的列表。 f的摘要如下

> summary(f)
     Length Class      Mode
[1,] 4      data.frame list
[2,] 4      data.frame list
[3,] 4      data.frame list

进一步

> str(f)
List of 3
 $ :'data.frame':   2557 obs. of  4 variables:
  ..$ Date   : Factor w/ 2557 levels "2003-01-01","2003-01-02",..: 1 2 3 4 5 6 7 8 9 10 ...
  ..$ sulfate: num [1:2557] NA NA 3.82 NA NA NA NA NA 3.1 NA ...
  ..$ nitrate: num [1:2557] NA NA 0.494 NA NA NA NA NA 0.452 NA ...
  ..$ ID     : int [1:2557] 70 70 70 70 70 70 70 70 70 70 ...
 $ :'data.frame':   1826 obs. of  4 variables:
  ..$ Date   : Factor w/ 1826 levels "2006-01-01","2006-01-02",..: 1 2 3 4 5 6 7 8 9 10 ...
  ..$ sulfate: num [1:1826] NA NA NA NA NA NA NA NA NA NA ...
  ..$ nitrate: num [1:1826] NA NA NA NA NA NA NA NA NA NA ...
  ..$ ID     : int [1:1826] 71 71 71 71 71 71 71 71 71 71 ...
 $ :'data.frame':   2191 obs. of  4 variables:
  ..$ Date   : Factor w/ 2191 levels "2001-01-01","2001-01-02",..: 1 2 3 4 5 6 7 8 9 10 ...
  ..$ sulfate: num [1:2191] NA NA NA NA NA NA NA NA NA NA ...
  ..$ nitrate: num [1:2191] NA NA NA NA NA NA NA NA NA NA ...
  ..$ ID     : int [1:2191] 72 72 72 72 72 72 72 72 72 72 ...

现在f [1]是列表的第一个数据帧。我想将它分配,以便我只得到硫或硝酸盐柱。因此我传递代码

pol<-"nitrate"
f[1][[pol]]  which failed. i tried many other ways like,f[1][,pol],f[1][,nitrate] etc. 

它们都不起作用。请帮助我。我完全迷失了。

1 个答案:

答案 0 :(得分:0)

我们可以使用[[list中提取元素。如果我们需要第一个元素,它将是f[[1]]并且它是data.frame,因此按列名称进行子集化将获得data.frame的列并返回data.frame

f[[1]]['sulfate']

如果我们需要返回vector

f[[1]][['sulfate']]

f[[1]][, 'sulfate']

可以使用。

f[1]仍是list。我们可以查看str(f[1])str(f[[1]])来了解结构。