簡體   English   中英

為 function 中的變量傳遞 arguments

[英]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.

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