将字符串作为数据框列名称传递

时间:2011-11-02 10:10:09

标签: r dataframe

我有一个名为data.df的数据框,其中包含各种列,例如col1,col2,col3 .... col15。数据框没有特定的类属性,但任何属性都可能用作类变量。我想使用一个名为target的R变量,它指向要被视为类的列号,如下所示:

target<-data.df$col3

然后使用该字段(目标)作为几个学习者的输入,例如PART和J48(来自包RWeka):

part<-PART(target~.,data=data.df,control=Weka_control(M=200,R=FALSE))
j48<-J48(target~.,data=data.df,control=Weka_control(M=200,R=FALSE)) 

我的想法是能够在我的R代码开头只更改一次'目标'。怎么办呢?

2 个答案:

答案 0 :(得分:16)

我有时会通过使用字符串来引用列来完成很多工作。它的工作原理如下:

> df <- data.frame(numbers=seq(5))
> df
  numbers
1       1
2       2
3       3
4       4
5       5
> df$numbers
[1] 1 2 3 4 5
> df[['numbers']]
[1] 1 2 3 4 5

然后,您可以将变量target作为字符串的所需列的名称。我不知道RWeka,但许多库如ggplot可以对列进行字符串引用(例如aes_string参数而不是aes)。

答案 1 :(得分:6)

如果您询问在R中使用references,则无法进行。

但是,如果您询问是否未明确指定列名,则可以使用[运算符,如下所示:

theNameOfColumnIwantToGetSummaryOf<-"col3"
summary(data.df[,theNameOfColumnIwantToGetSummaryOf])

...或者那样:

myIndexOfTheColumnIwantToGetSummaryOf<-3
summary(data.df[,sprintf("col%d",myIndexOfTheColumnIwantToGetSummaryOf)])