R:使用列表访问数据框

时间:2019-01-16 17:21:50

标签: r

我对编码还很陌生,所以请多多包涵。我正在进行R分配,要求我创建一个函数来使用混合字符列表从现有数据框中选择列,然后从这些选定的列中创建一个新的数据框。

我意识到使用一堆附加组件这可能是微不足道的,但是我试图了解数据框架和列表之间的交互所缺少的内容。

现在,我一直在控制台中进行测试,以更好地了解访问数据帧的过程。

我知道我想为使用MyDataFrame [___]的我提供某种访问器,但是在这种情况下使用列表似乎是不正确的,因为我收到一条错误消息,指出它是不受支持的索引类型:列表。

将列表的各个组件应用于数据框访问器时,我是否错误地访问了列表的各个组件?

编辑:

抱歉,缺少详细信息。 我正在使用ggplot2的mpg数据框进行测试,因此这就是我一直插入控制台的内容:

mylist <-list(1,2,“ drv”)#这很好用

mpg [mylist]#这根本不起作用,我收到错误消息:不支持的索引类型。

基本上,我正在尝试使用列表作为访问者列表来访问data.frame中的三列。


自从完成此工作以来,我一直以为我会分享自己的解决方案,而且我听到人们喜欢完成的事情:

selectCols<-function(data, ...){
#need to generate a list from the ... argument
  arguments<-list(...)   #Create a New Data Frame using the list created above
  for (i in 1:length(arguments)){
    if(i==1){
      mydataframe<-cbind(data[arguments[[i]]])}
    else{ 
      mydataframe<-cbind(mydataframe,data[arguments[[i]]])
    }
  }
  print(mydataframe)
}

1 个答案:

答案 0 :(得分:1)

如果您尝试访问数据框,则使用向量比使用列表要容易。例如

columns_to_access <- c("year", "drv")
mpg[columns_to_access] 

但是您还要混合使用列名和列索引,所以

mpg[c("year", "drv")]

将起作用,

mpg[1:2]

但不能混合。

编辑:如果您使用软件包“ dplyr”,则可以使用混合物,如this answer

所示