[英]Pass column names as argument into a function
我創建了一個數據表df
library(data.table)
df <- data.table(id = c(1,1,1,2,2), starts = c(0,0,6,0,9), ends = c(0,6,10,9,20))
df
#id starts ends
#1: 1 0 0
#2: 1 0 6
#3: 1 6 10
#4: 2 0 9
#5: 2 9 20
我定義了一個函數“equal_0”,它輸入一個col_name
,然后該函數將返回一個帶有col_name == 0
的數據表
equal_0 <- function(col_name){
a <- df[col_name == 0]
return(a)
}
例如, equal_0(starts)
等於df[starts == 0]
,預期結果是:
df[starts==0]
#id starts ends
#1: 1 0 0
#2: 1 0 6
#3: 2 0 9
但是, equal_0(starts)
和equal_0("starts")
都不起作用。
錯誤信息是:
equal_0("starts")
#Empty data.table (0 rows) of 3 cols: id,starts,ends
equal_0(starts)
#Error in eval(.massagei(isub), x, parent.frame()) : object 'starts' not found
如何將starts
傳遞到函數equal_0
?
使用get
從 data.table 中提取列:
equal_0 <- function(col_name){
library(data.table)
a <- df[get(col_name) == 0]
return(a)
}
equal_0("starts")
id starts ends
1: 1 0 0
2: 1 0 6
3: 2 0 9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.