【问题标题】:Writing a function that returns n largest values given a dataset and a variable编写一个函数,在给定数据集和变量的情况下返回 n 个最大值
【发布时间】:2021-10-06 15:44:34
【问题描述】:

我想写的函数

f <- function(x, variable.name, n) {
  order <- x[order(x$variable.name, decreasing = TRUE), ]
  head(order, n = n)
}

应该从数据集 x 返回 variable.name 的最大 n 个值。但是在运行函数时:

f(x=iris, variable.name="Sepal.Length", n = 5)

R 返回以下错误信息:

Error in order(df$var.name, decreasing = TRUE) : 
argument 1 is not a vector

有人可以帮助我了解该功能有什么问题吗?当不在函数内部时,函数的输入按预期工作。

【问题讨论】:

  • 你不能对变量使用$子集(R怎么知道你指的是文字名称还是变量?);你需要使用例如x[[variable.name]] 代替。

标签: r function


【解决方案1】:

问题是您试图调用x$variable.name,其中variable.name 是您定义的字符串。我认为这不是$ 的工作方式。请改用[[

f <- function(x, variable.name, n) {
  order <- x[order(x[[variable.name]], decreasing = TRUE), ] 
  head(order, n = n) 
}

输出

f(x=iris, variable.name="Sepal.Length", n = 5)
    Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
132          7.9         3.8          6.4         2.0 virginica
118          7.7         3.8          6.7         2.2 virginica
119          7.7         2.6          6.9         2.3 virginica
123          7.7         2.8          6.7         2.0 virginica
136          7.7         3.0          6.1         2.3 virginica

【讨论】:

    猜你喜欢
    • 2015-10-30
    • 2016-06-18
    • 2014-12-08
    • 2021-01-25
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 2012-11-02
    • 2013-01-11
    相关资源
    最近更新 更多