Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何导入列名作为标识符而不是R中的文件名的csv文件_R - Fatal编程技术网

如何导入列名作为标识符而不是R中的文件名的csv文件

如何导入列名作为标识符而不是R中的文件名的csv文件,r,R,如何根据csv文件的列名而不是文件名导入csv文件?假设我的工作目录中有两个不同的csv文件。其中一个文件名为“interest.csv”,列名如下:“interesting1”“interesting2”“interesting3” 我正在寻找扫描这个文件夹,这个工作目录的东西,并通过它们的列名检查文件,这样我就可以用read_csv2读取文件“interest.csv”。我想知道它是怎么做的,因为有时候文件名会改变。假设“interest.csv”变成“interest\u cool.csv

如何根据csv文件的列名而不是文件名导入csv文件?假设我的工作目录中有两个不同的csv文件。其中一个文件名为“interest.csv”,列名如下:“interesting1”“interesting2”“interesting3”

我正在寻找扫描这个文件夹,这个工作目录的东西,并通过它们的列名检查文件,这样我就可以用read_csv2读取文件“interest.csv”。我想知道它是怎么做的,因为有时候文件名会改变。假设“interest.csv”变成“interest\u cool.csv”,列名不会改变。在这种情况下,read_csv2(“interest.csv”)不起作用,因为没有这样的文件

是否有一个函数可以“扫描”文件夹中的所有文件的标题,并将其与我提供给Rscript的名称进行比较

类似这样的内容:
read\u csv2(查找带有标题(“interesting1”、“interesting2”、“interesting3”)的文件)

很抱歉,如果这是重复的,我找不到我需要的

问候

罗南方法的更新:

file_list1 <- list.files(getwd(), full.names = TRUE, pattern = "\\.csv$")
file_list2 <- list.files(getwd(), full.names = TRUE, pattern = "\\.CSV$")
(file_list <- c(file_list1, file_list2)); rm(file_list1, file_list2)

col_names = c("interesting1" "interesting2" "interesting3")

file_index <- which(sapply(file_list, function(x) 
  all(col_names %in% names(read.csv2(x, nrows = 0)))))[1]

return(read.csv2(file_list[file_index]))

文件列表1不确定R中是否有现成的解决方案

这里有一种方法,您可以读取文件夹中所有文件的列名,并返回与传递的所有列名匹配的完整文件

return_correct_file <- function(path, col_names) {

  file_list <- list.files(path, full.names = TRUE)
  file_index <- which(sapply(file_list, function(x) 
                     all(col_names %in% names(read.csv2(x, nrows = 0)))))[1]
  return(read.csv2(file_list[file_index]))
}

return\u correct\u file不确定R中是否有现成的解决方案

这里有一种方法,您可以读取文件夹中所有文件的列名,并返回与传递的所有列名匹配的完整文件

return_correct_file <- function(path, col_names) {

  file_list <- list.files(path, full.names = TRUE)
  file_index <- which(sapply(file_list, function(x) 
                     all(col_names %in% names(read.csv2(x, nrows = 0)))))[1]
  return(read.csv2(file_list[file_index]))
}

return\u correct\u file我看到的唯一方法是读取所有csv文件的第一行,然后获取它们的标题,如果标题符合某些条件,则导入文件。不过,您可能需要重新考虑这个策略。保持表的文件名不变要容易得多。黄金分割可以是通过前缀来增加文件名,比如说,有趣的6.csv、有趣的7.csv和导入最新的文件。你能为我打印你在
头(文件列表)
中得到了什么吗?[1]“C:/Users/Dutschke/file1.csv”“C:/Users/Dutschke//file2.csv”[3]“C:/Users/Dutschke/file3.csv”“C:/Users/Dutschke/file4.csv”[5]“C:/Users/Dutschke/file5.CSV”,其中一个文件有“interesting1”“interesting2”“interesting3”列“
文件索引
应该有一个文件编号,该编号包含
列名称
中的所有列。因此,我认为没有一个文件具有所有列,这就是它返回
NA
的原因。确保列名中没有拼写错误、前导/后置空格。它们需要精确匹配。
名称(read.csv2(file_list[1],nrow=0))
返回什么?是的,结果将是相同的,但是如果文件非常大
read_csv2
会比较慢,因为
read_csv2
正在读取文件的所有行,而
read.csv2
只读取1(头)我看到的唯一方法是读取所有csv文件的第一行,获取它们的标题,然后如果标题符合某些条件,则导入文件。不过,您可能需要重新考虑这个策略。保持表的文件名不变要容易得多。黄金分割可以是通过前缀来增加文件名,比如说,有趣的6.csv、有趣的7.csv和导入最新的文件。你能为我打印你在
头(文件列表)
中得到了什么吗?[1]“C:/Users/Dutschke/file1.csv”“C:/Users/Dutschke//file2.csv”[3]“C:/Users/Dutschke/file3.csv”“C:/Users/Dutschke/file4.csv”[5]“C:/Users/Dutschke/file5.CSV”,其中一个文件有“interesting1”“interesting2”“interesting3”列“
文件索引
应该有一个文件编号,该编号包含
列名称
中的所有列。因此,我认为没有一个文件具有所有列,这就是它返回
NA
的原因。确保列名中没有拼写错误、前导/后置空格。它们需要精确匹配。
names(read.csv2(file_list[1],nrow=0])
返回什么?是的,结果是一样的,但是如果文件很大
read_csv2
会比较慢,因为
read_csv2
正在读取文件的所有行,而不是
read.csv2
只读取1(头)行。文件错误(文件,“rt”):无效的“说明”argument@Dutschke这意味着您的文件路径不正确。您是否根据您的系统路径将“路径/更改为/csv/files”
?尝试先读取一个文件
file\u列表如果我这样做,R将导入该文件,而不会给出错误或警告。现在用所有文件重试时,会显示:文件中有错误(文件,“rt”):无法打开连接另外:警告消息:文件中有错误(文件,“rt”):文件中有错误(文件,“rt”):无法打开连接。。。。。。是的,我已经查过了,但是没有任何帮助。这很奇怪。我不能在我的系统上复制这个。不管有没有功能,它都适合我。我希望您的
列表.文件中有
full.names=TRUE
。如果删除
文件列表,那么第二个错误是因为文件夹中还有csv以外的其他文件。我用pattern=“\\.csv$”对其进行了筛选,但仍然存在以下错误:文件中的错误(文件,“rt”):无效的“description”参数。。。另外,如果我删除了您编写的内容。文件(文件,“rt”)中的错误:无效的“说明”argument@Dutschke这意味着您的文件路径不正确。您是否根据您的系统路径将“路径/更改为/csv/files”
?尝试先读取一个文件
file\u列表如果我这样做,R将导入该文件,而不会给出错误或警告。现在用所有文件重试时,会显示:文件中有错误(文件,“rt”):无法打开连接另外:警告消息:文件中有错误(文件,“rt”):文件中有错误(文件,“rt”):无法打开连接。。。。。。是的,我已经