【发布时间】:2019-08-17 12:42:37
【问题描述】:
函数排序运行。它输出一个年份列表,而不是读取我计算机上的 104 个文件。我也尝试过设置 knitr,并在 cmets 中列出了下面列出的代码。我对函数内部的想法持开放态度(year="all"),但我的作业要求我们使用粘贴函数。
setwd("C:/Users/Sarah/Downloads/names-full-datasets/names-full-datasets")
library(purrr)
baby.names <- function(year="all"){
if(year!="all"){cnames <- read.table(paste("yob",year,".txt", sep =
""),header = FALSE,
sep = ",", col.names = c("Name","Sex","Count"))
cnames$year <- year
}
else
{
cnames <- lapply(1910:2013, baby.names)
ldply(cnames)
}
}
yall <- baby.names()`
```
【问题讨论】:
-
据我所知,函数中
year参数的默认值为“all”。但该函数仅在值不是“all”时设置工作目录。最重要的是,您已经在函数之外设置了目录。我建议在这个网站上搜索其他解决方案,有很多类似的问题都有很好的答案。 -
这是作业,所以老师让我们把功能设置为all。然后运行它,使其运行所有年份。由于这是家庭作业,我必须将其保留在一个函数中以获得完整的学分,即使有更简单的方法可以做到这一点。
-
但是你应该编写你的函数,这样无论
year是否设置为"all",它都能正常工作。无论year是否设置为"all",工作目录都是一样的,所以至少把setwd()放在if()之前之前,而不是放在里面。 -
对不起,我已经在原始代码上修复了这个问题,但粘贴了错误的版本
标签: r function if-statement paste read.table