for(i在seq_along(data_file)中:在file(file,“ rt”)中出错:无效的'description'参数

时间:2018-09-15 16:17:58

标签: r

我首先通过一个Excel文件将数据读入R,该文件包含文件位置和文件名列表:

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 :(得分:1)

@Rui Barradas得到我的投票,但值得扩大他的答案。来自?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输出的副本和粘贴比图像更容易。避免抓住屏幕来回答将来的问题对其他人会有所帮助。