我对编码还很陌生,所以请多多包涵。我正在进行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)
}
答案 0 :(得分:1)
如果您尝试访问数据框,则使用向量比使用列表要容易。例如
columns_to_access <- c("year", "drv")
mpg[columns_to_access]
但是您还要混合使用列名和列索引,所以
mpg[c("year", "drv")]
将起作用,
mpg[1:2]
但不能混合。
编辑:如果您使用软件包“ dplyr”,则可以使用混合物,如this answer
所示