Ошибка: в if (file == "") file <- stdout () else if (is.character (file)) {: условие имеет длину> 1 и будет использоваться только первый элемент - PullRequest
0 голосов
/ 08 мая 2018

Я хочу прочитать xlsx-файл и записать каждую строку отдельно, как csv-файлы.Моя идея состояла в том, чтобы сначала выбрать одну строку и сохранить эту, а затем взять имена, которые указаны в одном столбце, и пройти через это.Как выглядит мой код:

## read xlsx-file

dataset_allsheets <- read_xlsx("U:/my_path/model/R/file.xlsx", 
                                       sheet = "TOTAL", 
                                       range = "B3:FJ398")

## take only the column where name is specified

subset_countrynames <- dataset_allsheets[,1]


## create loop
for(i in subset_countrynames){

    country <- i

## connect data from the specific country and save  as csv

one_country <- as.data.frame(dataset_allsheets[dataset_allsheets$Countryname==country,])

write.csv2(one_country, file = paste("08052018",country,".csv"))

}

Когда я запускаю его, он возвращает следующую ошибку:

Error in file(file, ifelse(append, "a", "w")) : 
  invalid 'description' argument
In addition: Warning message:
In if (file == "") file <- stdout() else if (is.character(file)) { :
  the condition has length > 1 and only the first element will be used

Когда я даю 'стране' имя вручную, которое существует в кадре данных, он работаети пишет CSV отлично.Я также удалил все НС.Так что, похоже, проблема с циклом.У кого есть идея?

1 Ответ

0 голосов
/ 08 мая 2018

Переменная «страна» в вставке файла write.csv2 недопустима, возможно, она имеет более одного значения.Вы можете попытаться отладить его, проверив, является ли «subset_countrynames» массивом названий стран.

...