考虑到下面的数据库(称为data),我想创建一个函数来检索给定“Letter”的第一个“Start”位置。我想让我的函数将 Dataframe 和Letter作为输入。我想在不使用库的情况下完成这一操作。
| 信件|开始|完|
| - ------|- ------|- ------|
| A类|1个|第二章|
| A类|三个|三个|
| A类|第二章|四个|
| B|四个|五个|
| B|六个|1个|
| B|第二章|六个|
| C级|四个|八个|
| C级|九|三个|
| C级|七|三个|
我认为第一步应该是子集化特定的“字母”,我想得到的“开始”的立场:newdata <- subset(data, data == "A")
这产生了字母A特定的 Dataframe :
| 信件|开始|完|
| - ------|- ------|- ------|
| A类|1个|第二章|
| A类|三个|三个|
| A类|第二章|四个|
第二步应为第一个起始位置的子集化 Dataframe 编制索引:newdata[1,2]
输出:1
它的工作,因此我做了一个函数的基础上,上述步骤,其中x是一个命名的 Dataframe 和y是变量选择:getFirstLetter <- function(x, y){ newdata <- subset(x, x == "y") return(newdata[1,2]) }
测试功能,但得到NA:getFirstLetter(data, A)
输出:不适用
故障排除代码:getFirstLetter(data, "A")
输出:不适用
我希望能得到一些指导,解释为什么我的函数没有返回预期的输出。谢谢。
2条答案
按热度按时间zaqlnxep1#
您可以使用
as.character(substitute())
:一种稍微简洁一点的方法是使用
match()
索引到x
中:jhiyze9q2#