【问题标题】:calling variable name of a dataframe inside functions in R using "$"使用“$”在R中的函数内调用数据框的变量名
【发布时间】:2016-12-02 10:14:22
【问题描述】:

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

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

我正在尝试创建一个函数,我可以在其中访问数据帧中的变量并对它们执行一些函数,尽管下面函数中的 x 和 val 似乎可以解决,但我如何使用函数内部的 $ 符号访问变量

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

                      print (n)  }
univar(master)

它返回 NULL,我什至尝试使用 n

【问题讨论】:

  • 使用[[ 而不是$
  • 也不工作(
  • 你有一个列表,你需要c
  • nrow(x) 或 length(x[[val]])

标签: r function


【解决方案1】:
  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]])

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 2022-01-20
      • 2021-07-27
      • 1970-01-01
      相关资源
      最近更新 更多