全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学
959 3
2024-01-20
我在运用下边readDat函数时总是报错,我试了自己先创建一个temp文件不行,把cmd换成适合windows的系统命令也不行,请各位前辈帮忙找找原因。
f1=readDat("RawData/Study1-Flanker/",22)时
总是报错:Warning: cannot open file 'temp': No such file or directoryError in file(file, "rt") : cannot open the connection

完整的readDat函数是这样的:
readDat=function(fileString,topLen)
{
        cmd=paste("ls -1 ",root,fileString, " >temp",sep='')
        system(cmd)
        filenames=as.vector(read.table('temp'))

        dat=NULL
        nFiles=dim(filenames)[1]
        subLab=sesLab=1:nFiles
        for (n in 1:nFiles){
                string=filenames[n,1]
                sesLab[n]=as.integer(str_sub(string,start = -5, end= -5 ))
                subLab[n]=ifelse(str_length(string)==topLen,
                        as.integer(str_sub(string,start=9,end=10)),
                        as.integer(str_sub(string,start=9,end=9)))
                partial0=read.csv(head=F,
                        paste(root,fileString,'//',as.character(string),sep=''))
                colnames(partial0)=
                        c('blk','trl','stim','cond','acc','rt')
                sub=rep(subLab[n],length(partial0[,1]))
                session=rep(sesLab[n],length(partial0[,1]))
                partial1=cbind(sub,session,partial0)
                dat=rbind(dat,partial1)
        }
        return(dat)
}

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2024-1-21 03:57:50
你遇到的问题可能是由于系统命令执行失败导致的。首先,确保你的R脚本所在的工作目录(working directory)正确设置,并且有足够的权限执行系统命令。另外,建议使用R的list.files函数来获取文件列表,而不是依赖系统命令。

以下是更新后的readDat函数,使用list.files来获取文件列表:

R
Copy code
readDat = function(fileString, topLen) {
  filenames = list.files(path = fileString, full.names = TRUE)

  dat = NULL
  nFiles = length(filenames)
  subLab = sesLab = 1:nFiles

  for (n in 1:nFiles) {
    string = filenames[n]
    sesLab[n] = as.integer(str_sub(string, start = -5, end = -5))
    subLab[n] = ifelse(str_length(string) == topLen,
                       as.integer(str_sub(string, start = 9, end = 10)),
                       as.integer(str_sub(string, start = 9, end = 9)))

    partial0 = read.csv(string)
    colnames(partial0) = c('blk', 'trl', 'stim', 'cond', 'acc', 'rt')
    sub = rep(subLab[n], length(partial0[, 1]))
    session = rep(sesLab[n], length(partial0[, 1]))
    partial1 = cbind(sub, session, partial0)
    dat = rbind(dat, partial1)
  }

  return(dat)
}
这个版本的函数使用list.files来获取文件列表,并直接读取文件,而不需要调用系统命令。确保你的R脚本的工作目录正确设置,并尝试运行这个更新后的函数。如果仍然有问题,请提供更多详细的错误信息,以便更好地帮助你解决问题。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2024-1-21 03:58:17
readDat = function(fileString, topLen) {
  filenames = list.files(path = fileString, full.names = TRUE)

  dat = NULL
  nFiles = length(filenames)
  subLab = sesLab = 1:nFiles

  for (n in 1:nFiles) {
    string = filenames[n]
    sesLab[n] = as.integer(str_sub(string, start = -5, end = -5))
    subLab[n] = ifelse(str_length(string) == topLen,
                       as.integer(str_sub(string, start = 9, end = 10)),
                       as.integer(str_sub(string, start = 9, end = 9)))

    partial0 = read.csv(string)
    colnames(partial0) = c('blk', 'trl', 'stim', 'cond', 'acc', 'rt')
    sub = rep(subLab[n], length(partial0[, 1]))
    session = rep(sesLab[n], length(partial0[, 1]))
    partial1 = cbind(sub, session, partial0)
    dat = rbind(dat, partial1)
  }

  return(dat)
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2024-1-28 20:46:52
zheliang01 发表于 2024-1-21 03:57
你遇到的问题可能是由于系统命令执行失败导致的。首先,确保你的R脚本所在的工作目录(working directory) ...
感谢回答!不再使用系统命令后可以往下运行啦!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群