【发布时间】:2019-04-04 14:36:20
【问题描述】:
我需要创建一个函数(使用 function() 代码),它允许用户在名为 myname 的向量中输入他们的姓名作为字符。该函数将创建一个作为babynames 子集的数据框,仅包括name 在myname 中的行。
我尝试编写代码,但我似乎无法理解的部分是:函数如何知道myname 将在数据框的names 列中找到?我还认为我正确地制作了子集,但是当我运行它时,它有 0 个观察值。
这是一些示例数据
nametrend <- function(myname) {
bn <- subset(babynames, name == myname, select = c("year", "n")) plot(x = bn$year, y = bn$n, main = myname, col = 'purple')
}
【问题讨论】:
-
您能提供一些示例数据吗?
-
并展示你是如何调用函数的。或许可以看到并注意
?subset文档中的警告:这是一个旨在交互使用的便利功能。对于编程,最好使用像[这样的标准子集函数,特别是参数子集的非标准评估可能会产生意想不到的后果。" -
好的,我添加了表格前几行的图片。例如,我需要该函数获取名称为“玛丽”的所有行,并按年份绘制该名称的人数。几周前我也刚开始学习 R,所以我不太了解它或您使用的一些单词,哈哈。我将如何使用 [ ?
-
请使用
dput()分享示例数据,以便可以复制/粘贴。dput(droplevels(babynames[1:20, ]))会给我们前 20 行。将其输出编辑到您的问题中。 -
这也说明了
[的子集化。babynames[1:20, ]是前 20 行。babynames[babynames$name == "Mary", ]是名称为“Mary”的所有行。babynames[babynames$name == "Mary", c("year", "n")]是名称为 Mary 的行,仅选择年份和 n 列。