R 使用用户创建函数中的文本作为基础,从其他数据框创建数据框

R 使用用户创建函数中的文本作为基础,从其他数据框创建数据框,r,function,automation,R,Function,Automation,我想创建一个函数,从另一个数据帧中的列创建r中的数据帧,使用创建调用时的文本作为数据帧中数据标签的基础 例如,我想使用mtcars数据集作为基础,为mpg和am创建以下数据集 ## desired dataframe 1 # ---- NOTE: creates object mtcars_specificed_column_object_mpg <- data.frame( mpg = mtcars$mpg, variable = "mpg",

我想创建一个函数,从另一个数据帧中的列创建r中的数据帧,使用创建调用时的文本作为数据帧中数据标签的基础

例如,我想使用
mtcars
数据集作为基础,为
mpg
am
创建以下数据集

## desired dataframe 1
# ---- NOTE: creates object
mtcars_specificed_column_object_mpg <- 
  data.frame(
    mpg = mtcars$mpg,
    variable = "mpg",
    dataset = "mtcars"
  )
# ---- NOTE: displays data head
head(mtcars_specificed_column_object_mpg)
   mpg variable dataset
1 21.0      mpg  mtcars
2 21.0      mpg  mtcars
3 22.8      mpg  mtcars
4 21.4      mpg  mtcars
5 18.7      mpg  mtcars
6 18.1      mpg  mtcars
所需数据帧1 #----注意:创建对象
mtcars\u specified\u column\u object\u mpg我们可以使用
substitute
提取对象名称,并将其转换为字符串(
deparse
)。另外,使用
[[
而不是
$
来提取列

function_create_dataset_specificed_column_object <- 

    function(variable_name, dataset_name) {
      colnm <- deparse(substitute(variable_name))
      nm1 <- deparse(substitute(dataset_name))

    dataset_specificed_column_object <- 
    data.frame(
        variable_name = dataset_name[[colnm]],
        variable = colnm,
          dataset = nm1
     )
    names(dataset_specificed_column_object)[1] <- colnm

   return(dataset_specificed_column_object)
 }

谢谢。我认为这应该很有效。我会自己测试一下,并在适当的时候打勾。我认为这个论点中没有任何引用是有意义的,至少现在是这样。印刷问题更像是我的打字错误。对于这些错误,我深表歉意。
## attempt to create function
function_create_dataset_specificed_column_object <- 
function(variable_name, dataset_name) {
  # ---- NOTE: # creates data frame of variable, with unique values
  dataset_specificed_column_object <- 
    data.frame(
      variable_name = dataset_name$variable_name,
      variable = "variable_name",
      dataset = "dataset_name"
    )
  # ---- NOTE: returns appropriate object
  return(dataset_specificed_column_object)
}

### using function
function_create_dataset_specificed_column_object(mpg, mtcars)
# ---- NOTE: function does not work

# base data frame
mtcars

## list of IVs of desired data frame
mtcars_IVs_of_interest_list$IVs <- c("mpg", "am")
mtcars_IVs_of_interest_list$dataset <- c("mtcars")

## desired dataframe 1
# ---- NOTE: creates object
mtcars_specificed_column_object_mpg <- 
  data.frame(
    mpg = mtcars$mpg,
    variable = "mpg",
    dataset = "mtcars"
  )
# ---- NOTE: displays data head
head(mtcars_specificed_column_object_mpg)

## desired dataframe 2
# ---- NOTE: creates object
mtcars_specificed_column_object_am <- 
  data.frame(
    mpg = mtcars$am,
    variable = "am",
    dataset = "mtcars"
  )
# ---- NOTE: displays data head
head(mtcars_specificed_column_object_am)


## attempt to create function
function_create_dataset_specificed_column_object <- 
function(variable_name, dataset_name) {
  # ---- NOTE: # creates data frame of variable, with unique values
  dataset_specificed_column_object <- 
    data.frame(
      variable_name = dataset_name$variable_name,
      variable = "variable_name",
      dataset = "dataset_name"
    )
  # ---- NOTE: returns appropriate object
  return(dataset_specificed_column_object)
}

### using function
function_create_dataset_specificed_column_object(mpg, mtcars)
# ---- NOTE: function does not work
function_create_dataset_specificed_column_object <- 

    function(variable_name, dataset_name) {
      colnm <- deparse(substitute(variable_name))
      nm1 <- deparse(substitute(dataset_name))

    dataset_specificed_column_object <- 
    data.frame(
        variable_name = dataset_name[[colnm]],
        variable = colnm,
          dataset = nm1
     )
    names(dataset_specificed_column_object)[1] <- colnm

   return(dataset_specificed_column_object)
 }
function_create_dataset_specificed_column_object(mpg, mtcars)
#    mpg variable dataset
#1  21.0      mpg  mtcars
#2  21.0      mpg  mtcars
#3  22.8      mpg  mtcars
#4  21.4      mpg  mtcars
#5  18.7      mpg  mtcars
#6  18.1      mpg  mtcars
#7  14.3      mpg  mtcars
#...