簡體   English   中英

如何在R函數中傳遞列名?

[英]How can I pass column names in an R function?

我想在函數內部創建一個數據框,該數據框是數據框d中的列的選擇

QPP<-function(dat,xvar,yvar){
  varx <<- dat[,c(xvar)]
  vary <<- dat[,c(yvar)]
  a <- cbind(varx,vary) 
  a <- as.data.frame(a)
  #Perform some operations
}

QPP(dat=d,xvar = area,yvar = f.ecdf)

但是我收到一條錯誤消息:

eval(expr,envir,enclos)中的錯誤:缺少參數,沒有默認值

  1. 我怎樣才能解決這個問題?
  2. 或者,我是否可以一步選擇列名,而不是選擇然后綁定它? 我不確定如何傳遞列名。

     dput(droplevels(head(d,10))) structure(list(area = c(96.8656, 96.8656, 562.0274, 117.5855, 117.5855, 117.5855, 117.5855, 117.5855, 117.5855, 117.5855), tp = c(1.5, 1, 0.5, 4.5, 6, 8.25, 4.25, 5.75, 10.75, 20.25 ), f.ecdf = c(0.887918176006819, 0.812380140634988, 0.760387811634349, 0.0372895802258683, 0.00809716599190283, 0.0310036224163648, 0.300660558278287, 0.441721713189857, 0.152354570637119, 0.386852759428937)), .Names = c("area", "tp", "f.ecdf"), row.names = c(NA, -10L), class = c("data.table", "data.frame")) 

您的功能非常好。 您傳遞參數的方式存在問題。 您應該將字符串作為變量名傳遞。

試試這個QPP(dat=d,xvar = "area" ,yvar = "f.ecdf")

現在,發生這種情況是因為,如果您注意到df[,c("col_name")]則參數“ col_name”為字符串

關於問題2:這是不使用cbind一步cbind

QPP<-function(dat,xvar,yvar)
{
colnames<- c(xvar, yvar)
new_df <<- dat[, c(colnames)]
}

QPP(dat=d,xvar = "area" ,yvar = "f.ecdf")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM