我有一个数据框(主),它有一些变量,我已经存储在下面的列表中:
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]),这似乎也不起作用。
答案 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)