Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用for循环加载和处理动态文件名_R_For Loop_Printf - Fatal编程技术网

使用for循环加载和处理动态文件名

使用for循环加载和处理动态文件名,r,for-loop,printf,R,For Loop,Printf,我正在处理一些.xlsx文件,它们的名称是time1\u drug1,time1\u drug2,直到tiume6\u drug5(总共30个文件)。我想将这些xlsx加载到R中,并将它们命名为数据集,如t1d1、t2d2。 我尝试使用sprintf,但我不知道如何使其有效 for(i in 1:6) { for(j in 1:5) { sprintf("time%i","drug%j,i,j)=read.xlsx("/Users/pathway/dataset/time_sprintf(%

我正在处理一些.xlsx文件,它们的名称是time1\u drug1,time1\u drug2,直到tiume6\u drug5(总共30个文件)。我想将这些xlsx加载到R中,并将它们命名为数据集,如t1d1、t2d2。 我尝试使用sprintf,但我不知道如何使其有效

for(i in 1:6) {
  for(j in 1:5) {
sprintf("time%i","drug%j,i,j)=read.xlsx("/Users/pathway/dataset/time_sprintf(%i,i)_drug(%j,j).xlsx", 1)}
names(sprintf("t%i","d%j,i,j))=c("result", "testF","TestN")
sprintf("t%i","d%j,i,j)$Discription[which(sprintf("t%i","d%j,i,j)$testF>=1&sprintf("t%i","d%j,i,j)$TestN>=2)]="High+High"
}
}

我希望得到30个数据,如t1d1到t6d5。

您可以使用
for
循环,但也应该使用
赋值功能:

for(i in 1:6){
for(j in 1:5){
assign(paste0('t', i, '_', 'd', j), read.xlsx(paste0("/Users/pathway/dataset/time_",i,"_drug",j,".xlsx"), 1))
}
}
你应该(几乎)永远不要使用
赋值
。当将多个文件读入R时,您应该(几乎)始终将它们放在一个命名列表中

更好的方法大致如下:

# Put all the excel files in a directory and this retrieves all their paths
f <- dir("/Users/pathway/dataset/",full.names = TRUE)
# Read all files into a list
drug_time <- lapply(X = f,FUN = read.xlsx)
# Name each list element based on the file name
names(drug_time) <- gsub(pattern = ".xlsx",replacement = "",x = basename(f),fixed = TRUE)
#将所有excel文件放在一个目录中,这将检索它们的所有路径

我的代码有用吗?当然!非常感谢你!谢谢你的回答,我还有一个问题。@HHuang你的问题是什么?我想将每次I_drug_j的列重命名为B C我应该使用什么代码?分配(名称(名称(paste0('time',I','u','drug',j)),C(“pERK”,“NGFR”,“AXL”))这似乎是一个错误,我想使用哪个函数创建第四列,time1_drug1$description[哪个](time1\u drug1$NGFR>=2和time1\u drug1$AXL>=1.5)]=“NFGR高和AXL高”