Ошибка в линиях записи: недопустимый аргумент «текст»

#r

Вопрос:

Я пытаюсь написать строку на основе приведенной ниже матрицы,

 print(mat)

     [,1]        [,2]     
[1,] "wesd"     "2.0E-5" 
[2,] "lesd"     "8.0E-8" 
[3,] "nf"       "16.0"   
[4,] "ldop"     "1.25E-6"
[5,] "lsop"     "2.0E-7" 
[6,] "esdoxide" "1.0"    
[7,] "gns"      "1.0" 
 

Ниже приведен мой код, .

 ipFile = 'text.txt'
fConn <- file(ipFile,open="w")
paramname <- c("a","b","c","d","e","f","g")
for(a in 1:length(paramname)) {
        
        
          tmpvar = 1
        #Using the matrix value printed above
          writeLines(c('parameters ',mat[a,1],'_',as.character(tmpvar),'=',as.character(mat[a,2]),'n'),con=fConn,sep="")
        
      a=a 1
}

   close(fconn)
 

Я получаю следующую ошибку,

 Error in writeLines: invalid 'text' argument
 

Я попытался изменить целочисленные значения, используемые в линиях записи, на as.character, но без надежды. А тем временем, когда я пытаюсь запустить приведенный выше код в консоли, он работает хорошо (удалив аргумент conn=fconn в коде writeLines). Этот код не работает, когда я пытаюсь запустить его из приложения rstudio.

Ответ №1:

Я попробовал это со своей стороны, и это сработало

 data= cbind(c( "wesd" , "lesd"  , "nf" ,"ldop" ,"lsop" , "esdoxide", "gns"),c( "2.0E-5" ,  "8.0E-8" , "16.0" , "1.25E-6",  "2.0E-7" , "1.0" ,  "1.0"))
ipFile = 'text.txt'
fConn <- file(ipFile,open="w")
paramname <- c("a","b","c","d","e","f","g")
for(a in 1:length(paramname)) {
  
  
  tmpvar = 1
  #Using the matrix value printed above
  writeLines(c('parameters ',data[a,1],'_',as.character(tmpvar),'=',as.character(data[a,2]),'n'),con=fConn,sep="")
  
  a=a 1
}

close(fConn)
 

Помогло ли это?

Комментарии:

1. Нет, это не работает для меня. Ошибка привязки к нижнему индексу. Я не думаю, что мне нужно делать cbind здесь. Так как cbind объединяет все это в один столбец.

2. это не работает, когда я запускаю приложение rstudio. Но это работает, когда я запускаю консоль!

Ответ №2:

Не знаю почему, но когда я использовал paste во время работы в приложении rstudio, код работал хорошо!

 writeLines(c('parameters ',paste(mat[a,1],'_',as.character(tmpvar),'=',as.character(mat[a,2])),'n'),con=fConn,sep="")