[英]Passing arguments for variables in a function
我是 R 的新手,並試圖了解函數的基本語法。
在下面的兩個函數f(x1)
和g(x,1)
中,我想生成y=2
。 只有前者有效。
我熟悉str_interp()
和paste()
函數,但它們似乎只在字符串的上下文中工作,而不是在變量的上下文中工作。 例如, prefixnum <- str_interp("${prefix}${num}")
不能解決問題。
我的動機是我想通過指定變量名稱的組件來調用 function。 我的背景是在 Stata 中,占位符用反引號和勾號指定(例如,`prefix'`num')。 我查閱了一些相關資源,無濟於事。
順便說一句,我已經閱讀了關於變量是否應該以 dataframe 為前綴的不同想法(例如, df$var
)。 是否遵循這個約定背后的邏輯是什么? 為什么f(df$x1)
有效,但編寫f(x1)
並將 function 修改為y <- df$var*2
無效?
df <- data.frame(x1=1)
f <- function(var) {
y <- var*2
y
}
f(df$x1)
g <- function(prefix,num) {
y <- df$prefixnum*2 #where "prefixnum" is a placeholder of some sort
y
}
g(x,1)
可能您正試圖將列名作為參數傳遞給 function。 您可以嘗試將prefix
和數字粘貼在一起以獲取列名並將其用於子集num
。
g <- function(data, prefix, num) {
y <- data[[paste0(prefix, num)]] *2
y
}
g(df,'x', 1)
#[1] 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.