使用“$”调用R中函数内的数据帧的变量名称

时间:2016-12-02 10:14:22

标签: r function

我有一个数据框(主),它有一些变量,我已经存储在下面的列表中:

cont<-list("Quantity","Amt_per_qty","Trans_tax","Total_trans_amt")
catg<-list("Gender","Region_code","SubCategory")

我正在尝试创建一个函数,我可以从数据框中访问变量并对它们执行一些函数,虽然下面函数中的x和val似乎已解决,但如何使用$ sign inside函数访问变量

univar<-function (x){
                 for (val in cont){
                   print (val)
                   n<-nrow(x$val) }

                      print (n)  }
univar(master)

它返回NULL,我尝试使用n&lt; -nrow(x [,val]),这似乎也不起作用。

2 个答案:

答案 0 :(得分:2)

  i) x[val] returns a data.frame
 ii) x[,val,drop = TRUE] returns a vector
iii) x[[val]] shall return as a vector. Advantage of this is : it also works with data.tables

n <- nrow(x) or length(x[[val]])

答案 1 :(得分:0)

原因是OP创建了list,它可能是unlisted然后使用[

cont <- unlist(cont)
univar<-function(x){
             for (val in cont){
               print (val)
               n<-nrow(x[[val]]) }

                  print (n)  }
univar(master)