for (я в seq_along (data_file): ошибка в файле (file, "rt"): неверный аргумент "description") - PullRequest
0 голосов
/ 15 сентября 2018

Я начинаю с чтения данных в R через файл Excel, который содержит список местоположений и имен файлов:

data_files <- readxl::read_excel("./Data/source_data.xlsx")

Вот как это выглядит: enter image description here

Далее я хочу перебрать этот список, используя цикл for / seq_along, чтобы получить доступ к каждой переменной строки и использовать переменную строки в read.csv (), а затем выполнить следующие действия:

for(i in seq_along(data_files)){
  x <- read.csv(data_files[[i]], sep= "\t", skipNul = TRUE)
  # DO THINGS
}

Когда я запускаю цикл for, я получаю:

Error in file(file, "rt") : invalid 'description' argument

Я знаю, что это связано с итерацией, которая не происходит так, как я ожидаю, потому что, когда я делаю следующее, csv успешно считывается в R:

path <- "/Users/gerb/Downloads/"
file <- "Who_Has_Seen_crosstab (2).csv"
path_file <- paste(path, file, sep="")

x <- read.csv(path_file, sep= "\t", skipNul = TRUE)

1 Ответ

0 голосов
/ 15 сентября 2018

@ Руи Баррадас получил мой голос, но стоит расширить его ответы.из ?seq_along: «seq_along и seq_len возвращают целочисленный вектор».Как уже упоминалось, вы можете увидеть это, добавив print в функцию.

l = tibble(a = c("a","b","C"))
x = tibble(a = c("a","b","C"),
            b = c("x","y","z"))

for(i in seq_along(l)){
    print(l[i])
}

# A tibble: 3 x 1
   a    
 <chr>
1 a    
2 b    
3 C 


for(i in seq_along(x)){
    print(x[i])
 }

> for(i in seq_along(x)){
      print(x[i])
   }

 #A tibble: 3 x 1
 a    
<chr>
1 a    
2 b    
3 C    
# A tibble: 3 x 1
  b    
 <chr>
1 x    
2 y    
3 z   

Вам не нужен весь вектор.Кажется, что вы хотите перебрать каждую строку в таблице.Есть и другие способы сделать это, но что-то вроде этого было бы лучше:

for(i in 1:nrow(l)){
    print(l[i,])
  }

# A tibble: 1 x 1
 a    
<chr>
1 a    
# A tibble: 1 x 1
  a    
 <chr>
1 b 
 .....   

Последний пункт: легче прочитать копию и вставить вывод R, чем изображение.Избегание скриншотов для будущих вопросов будет полезно для других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...