簡體   English   中英

R:如何將變量傳遞給函數以子集data.frame

[英]R: how to pass a variable into a function to subset data.frame

 dat = data.frame(height = c(20, 20, 40, 50, 60, 10), weight = c(100, 200, 300, 200, 140, 240),
             age = c(19, 20, 20, 19, 10, 11))
 f = function(x){
   subset.19 = dat$x[dat$age == 20]
   subset.20 = dat$x[dat$age == 19]
   t.test(subset.19, subset.20)  
 }
 f("weight")

我收到一個錯誤:

var(x)中的錯誤:'x'為NULL另外:警告消息:1:在is.na(x)中:is.na()應用於類型為'NULL'的非(列表或向量)2:在mean.default(x):參數不是數字或邏輯:返回NA

我認為這是因為dat$x始終為NULL,因為data.frame中沒有名為x的列。 我想我沒有將變量名傳遞給函數。 dat$x總是從dat子集名為x的列,而不是我傳入的列名(即weight)。 所以我的問題是如何傳遞想要的列名,以便該函數運行?

正如注釋中提到的@agstudy和@docendodiscimus,在函數中傳遞列名時,最好使用[[[而不是$

 f <- function(x){
     subset.19 = dat[,x][dat$age == 20]
     subset.20 = dat[,x][dat$age == 19]
   t.test(subset.19, subset.20)  
 }
f("weight")

暫無
暫無

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

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