【问题标题】:Loading .txt files using a function in R使用 R 中的函数加载 .txt 文件
【发布时间】:2015-05-05 15:50:39
【问题描述】:

以下代码有效:

Name<-"s1521r0000_rd2.txt"  
OneFile<-read.table(file=Name, sep="", skip=35, fill=TRUE )

但是,我正在尝试编写一个函数来加载一个 .txt 文件,以便我可以加载任何我想要的 .txt 文件。我写了以下不起作用的函数:

ReadOneFile<-function(Name="s1521r0000_rd2.txt"){  
 OneFile<-read.table(file=Name, sep="", skip=35, fill=TRUE )  
}  

如果你能帮助我,那就太好了。

【问题讨论】:

  • 也许您需要添加return(OneFile) 或者只是去掉OneFile&lt;-,因为最后计算的值是默认返回值。
  • 我能问一下你想用这个完成什么吗?您可以使用下面的代码轻松做到这一点,但您基本上是将现有函数包装在另一个函数中,这似乎没有必要?
  • 您是否只是想循环加载目录中的所有文件并为其分配名称?
  • 我猜你的错误是认为 OneFile 会在你调用 ReadOneFile(...) 时被修改,但它不会 - 函数作用域内的变量是该作用域的本地变量,因此 @函数内部的 987654327@ 与外部的 OneFile 不同(如果您真的想分配给外部变量,但不要,只需使用返回值)
  • @TARehman,我打算加载一个文件并对其进行一些操作并加载另一个等等。

标签: r string function


【解决方案1】:

你需要将return()文件从函数转换成一个对象。例如:

func.readonefile <- function(Name) {
    thefile <- read.table(file=Name,sep="",skip=35,fill=TRUE)
    return(thefile)
}
a_file <- func.readonefile(Name="s1521r0000_rd2.txt")

【讨论】:

  • return 声明不会更改您发布的代码的任何内容; a &lt;- b 赋值后的值为a(即b),return 唯一添加的是返回值可见
  • 确实,最后一项是以您描述的方式隐式返回的。但是,如果您不将 read.table 分配给某些内容,则使用 read.table 将输出写入标准输出并且不会返回 AFAIK。
  • 右手边的函数是什么并不重要——试试吧
  • 无论如何,该功能仍然可以正常工作,对吧?我们在同一页上're:函数的作用域(即,您需要将函数的输出分配给全局环境中的对象)。
  • OP 太不清楚,无法回答 IMO - 我在 cmets 中大胆猜测,如果他们愿意,可以详细说明
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多