【问题标题】:Creating a read() command in a custom function在自定义函数中创建 read() 命令
【发布时间】:2014-10-04 00:15:55
【问题描述】:

我仍然是 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”将是“year”要分析的变量,但我现在不担心那个代码。

我感到困惑的是;我如何告诉 R gsg_lek 是一个 .csv 文件,并告诉它在我运行自定义函数时在正确的目录中查找它?

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

任何帮助将不胜感激。

【问题讨论】:

  • 如果 data.in 是包含扩展名的 csv 文件的完整路径,则函数的第一行应为 d1 <- read.csv(data.in) 或类似名称。不要使用附加;而只是return(d2)。你是什​​么意思“太多的任意工作?”

标签: r function csv command-line-arguments


【解决方案1】:

你可以做一个这样的函数:

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)
}

函数中的参数“csvFile”是您的 csv 文件的基本名称。在此特定示例中,它必须位于您的 C:/ 文件夹中。如果您的文件位于其他文件夹中,则必须将函数中的“C:/”更改为 csv 文件所在的文件夹。

运行函数:

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

请注意,参数必须在引号内。 'data' 现在将包含 gsg_lek.csv 的 year、complex 和 tot_male 列,对应于 2006 年

【讨论】:

  • 如果他们在 linux 机器上怎么办?您可能想要使用 file.pathpath.expand 而不是硬编码文件路径。
  • @technOslerphile 代码看起来应该可以运行,我完全按照您的方式输入了它,除了将 C:/ 设置为文件所在的位置(与我的工作目录相同)。但是当我运行时: data
  • 对不起上面的连续评论。我尝试了“ctrl+k”和“5个空格”将代码与文本分开,但都没有奏效......
  • 啊,我的错。两个参数都必须在引号内。它对我有用。
猜你喜欢
  • 2011-10-22
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多