作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 R 编程非常陌生,但我试图读取一个目录的多个文件,并为每个文件指定一个唯一的名称。我正在阅读使用 R 中的 Dendrochronology 程序库(包 dpIR)和 read.tucson 函数的文件。虽然我使用的是特定的包,但我认为我的问题相当笼统:
在循环中,我想通过将 "t"
与每个单独的文件名连接来创建文件。因此,如果我的目录中有一个名为 "2503"
的文件,我想在 R 中创建一个名为 "t2503"
的数据帧。接下来,我想使用 r.tucson 函数读取每个数据帧的数据。我只是用数据覆盖连接,而不是将读入数据分配给数据帧。有人可以帮我找出我缺少哪一步吗?
这是我尝试使用的代码:
#set to appropriate directory
setwd("C:/work")
#get a list of files in the directory
files <- list.files()
numfiles <- length(files)
for (i in 1:numfiles)
{
name<-paste("t",files[i],sep="")
name<-read.tucson(files[i],header=NULL)
}
最佳答案
我想你自己已经给出了答案:你必须使用?assign
。
尝试类似的事情:
for (i in 1:5) {
assign(paste0("DF", i), data.frame(A=rnorm(10), B=rnorm(10)))
}
这会循环从 1 到 5 的整数,并创建五个 data.frames“DF1”到“DF5”。对于您的示例,您应该只替换
name<-read.tucson(files[i],header=NULL)
与
assign(name, read.tucson(files[i],header=NULL))
但请注意,name
是 R 中的基本函数,因此我会使用其他命名约定或跳过第一行:
assign(paste("t",files[i],sep=""), read.tucson(files[i],header=NULL))
我希望这就是您正在寻找的内容。
关于r - 如何在 for 循环中重命名数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13940478/
我是一名优秀的程序员,十分优秀!