【问题标题】:How can I make my function access variables in this dataframe?如何让我的函数访问此数据框中的变量?
【发布时间】:2023-01-16 00:52:38
【问题描述】:

考虑到以下数据库(称为数据),我想创建一个函数来检索给定“字母”的第一个“开始”位置。我希望我的函数将数据框和字母作为输入。

Letter Start End
A 1 2
A 3 3
A 2 4
B 4 5
B 6 1
B 2 6
C 4 8
C 9 3
C 7 3

我认为第一步应该是对我想要获得“开始”位置的特定“字母”进行子集化:

newdata <- subset(data, data == "A")

这导致了一个特定于字母 A 的数据框:

Letter Start End
A 1 2
A 3 3
A 2 4

第二步应该是为第一个起始位置索引子集数据帧:

newdata[1,2] 输出:1

它起作用了,因此我根据上述步骤创建了一个函数,其中 x 是命名数据框,y 是要为其选择的变量:

getFirstLetter <- function(x, y){ newdata <- subset(x, x == "y") return(newdata[1,2]) }

测试了功能但得到了NA: getFirstLetter(data, A) 输出:NA

故障排除代码: getFirstLetter(data, "A") 输出:NA

对于我的函数为何未返回预期输出的一些指导,我将不胜感激。 谢谢。

【问题讨论】:

  • 你在subset(x, x == "y") 中引用了y

标签: r database dataframe function


【解决方案1】:
library(tibble)

df <- tibble::tribble(
  ~Letter, ~Start, ~End,
      "A",     1L,   2L,
      "A",     3L,   3L,
      "A",     2L,   4L,
      "B",     4L,   5L,
      "B",     6L,   1L,
      "B",     2L,   6L,
      "C",     4L,   8L,
      "C",     9L,   3L,
      "C",     7L,   3L
  )
getFirstLetter <-  function(df, letter){
  newdata <- subset(df, Letter == letter)[1,2] 
  return(newdata) 
}

getFirstLetter(df = df, letter = "A")

【讨论】:

    猜你喜欢
    • 2020-04-26
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多