在自定义函数中创建read()命令

时间:2014-10-04 00:15:56

标签: r function csv command-line-arguments

我仍然是R世界的新秀,在一个非常加速的课程中,有限/无指导。我的任务是构建一个自定义函数,该函数读入特定的.csv,并将一些特定的列分析出去进行分析。有人可以提供一些建议吗?我给出的“示例代码”看起来像这样:

AnnualLekSurvey=function(data.in,stat.year){
d1=subset(data.in,year==stat.year)
d2=d1[c("year","complex","tot_male")]
      attach(d2)}

所以当它完成并且我运行它时,我应该能够说:

AnnualLekSurvey(gsg_lek,2006)

其中“gsg_lek”是我要导入的文件的名称,而2006年是我想要子集的“年”列的值。 “complex”和“tot_male”将是“年”分析的变量,但我现在并不担心该代码。

我很困惑的是;我怎么告诉R gsg_lek是一个.csv文件,并告诉它在运行自定义函数时查看正确的目录?

我在这里看到另外一个模糊相似的例子,他们不得不使用if()和paste()命令来构建文件名的字符串 - 这似乎是太多随意的工作,除非我只是懒惰...

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

你可以制作这样的函数:

AnnualLekSurvey <- function(csvFile, stat.year)
{
  d1 <- read.csv(paste("C:/",csvFile,".csv", sep=""),header=T, sep=",")  
  d2 <- subset(d1, year==stat.year)
  d2 <- d2[, c("year","complex","tot_male")]
  return(d2)
}

论证&#39; csvFile&#39;在函数中是csv文件的基本名称。在此特定示例中,这必须位于您的C:/文件夹中。如果您的文件位于其他文件夹中,则必须更改&#34; C:/&#34;在函数中csv文件所在的文件夹。

运行功能:

data <- AnnualLekSurvey("gsg_lek", "2006")

请注意,参数必须在引号内。 &#39;数据&#39;现在将包含对应于2006年的gsg_lek.csv列的年份,复数和tot_male