r - R中文件名格式变量内嵌套循环中的操作
问题描述
以下代码在 R 中运行良好,我通过在 matlab 的嵌套循环(SID,会话)中使用“disp”函数来完成这个技巧。
....
S09_06<- read.csv("09_06.csv", header=TRUE,sep=",")
S10_01<- read.csv(file="10_01.csv",header=TRUE, sep=",")
...
所以现在编码是R + matlab的组合,实际上效率不高。
应该有一些方法可以在 R 中实现它?
我已经尝试过多次根据互联网上找到的可能解决方案进行少量修改的编码,
SID = c(....9, 10,....)
S = 1:6
for (value in SID){
if (value < 10)
for (value in S){
paste0("S0",SID,"_0",S) = read.csv(file = paste("0",SID,"_0", S, ".csv"), header=TRUE,sep=",")
}else{
paste0("S",SID,"_0",S) = read.csv(file = paste("0",SID,"_0", S, ".csv"), header=TRUE,sep=",")
}
}
但是,下面的错误消息每次都会显示,
“文件中的错误(文件,“rt”):无效的“描述”参数”
如何使操作有效?
谢谢你。
解决方案
考虑通过首先构建文件名向量并将它们传递到lapply
orsapply
调用来构建数据框列表。下面用于sapply
生成命名(与未命名)数据框列表。
# CREATE VECTOR OF FILE NAMES (PASSING TWO VECTORS)
filenames <- as.vector(sapply(SID,
function(x,y) paste0("S", ifelse(x < 10,
paste0("0", x),
paste(x)),
"_0", y),
S)
)
# CREATE NAMED LIST OF DATA FRAMES (PASSING ONE VECTOR)
df_list <- sapply(filenames, function(i) {
fname <- paste0(substr(i, 2, nchar(i)),".csv")
read.csv(fname, header=TRUE, sep=",")
}, simplify=FALSE)
# ACCESS INDIVIDUAL DATA FRAMES
df_list$S09_01
df_list$S09_02
df_list$S09_03
...
推荐阅读
- android - Android 模拟器无法在 Android Studio 中上线
- c++ - 自定义 QToolBar 扩展按钮
- java - sun.rmi.server 和 sun.rmi.transport - Java 10 不支持 jdk 内部 API
- linux - 在 sysresccd 中编辑 Debian 8 引导文件
- php - preg_match_all 从文件读取返回空数组
- python - 获取分组中具有最大值的行
- python - 将代理与 docker selenium python 一起使用不起作用
- sql - 如何根据日期列值的偏移量从表中仅获取一个条目
- search - 即使在我打开链接时加载 PDF 需要更多时间,谷歌如何如此快速地搜索 PDF?
- php - 使用 PHP 解析 DOMDocument 时出错