【问题标题】:Create a function to generate table from dataset创建一个函数以从数据集生成表
【发布时间】:2023-03-28 04:35:02
【问题描述】:

我有一个数据集(我们称他为 db_data),我想从该数据集的 2 个变量中创建一个表(我们称它们为 var1var2)。

db_data <- base::data.frame(var1 = c("M", "M", "F", "F", "F"), 
                            var2 = c("brown", "blue", "brown", "brown", "brown"))

我可以很容易地做到这一点:

tab <- base::table(db_data[j = c("var1", "var2")])
tab

我的问题是我想在更大的工作中多次使用它。所以我尝试创建一个函数来做到这一点,但根本没有结果。

# Create function
tab_function = function(data,
                         var1,
                         var2) {
tab <- base::table(data[j = c(var1, var2)])
tab
}

# Test
tab_function(data = db_data, var1 = "var1", var2 = "var2")

这播放没有错误,但我得到了完全不同的结果,并且没有任何对象。我尝试使用get()noquote() 以及

# This
tab_function(data = data, var1 = var1, var2 = var2)

# This
tab_function = function(data,
                         var1,
                         var2) {
tab <- base::table(data[j = c("var1", "var2")])
tab
}

我不明白。这似乎很容易,但它不起作用。

【问题讨论】:

  • (1) 我在table(.)tab_function(.) 之间得到相同的结果。 (2) 两者都发出警告,不鼓励在[drop= 除外)中使用命名参数。你收到这些警告了吗?如果是这样,我建议不要忽略它们。
  • 删除 j = 会阻止警告。

标签: r function


【解决方案1】:

您可以使用return 从函数中返回某些内容。另外,我通过更改 data.frame 中两列的选择方法来避免提到的警告 r2evans。

tab_function <- function(db_data, var1, var2){
  tab <- base::table(db_data[,names(db_data) %in% c(var1, var2)])
  return(tab)
}

tab_function(db_data, "var1", "var2")

    var2
var1 blue brown
   F    0     3
   M    1     1

【讨论】:

  • 虽然这是一种很好的做法,但您不必使用 return。 R 将自动返回其函数的最后输出。在这方面,OPs 代码很好(它会返回选项卡);他们不需要明确地使用返回值。
猜你喜欢
  • 1970-01-01
  • 2011-02-16
  • 2021-04-11
  • 2018-04-21
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多