是否可以将列索引传递给 read_csv?
我将许多 CSV 文件传递给具有不同标题名称的 read_csv,而不是指定我希望使用列索引的名称。
这可能吗?
df.list <- lapply(myExcelCSV, read_csv, skip = headers2skip[i]-1)
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用紧凑的字符串表示形式,其中每个字符代表一列:c = 字符,i = 整数,n = 数字,d = 双精度,l = 逻辑,f = 因子,D = 日期,T = 日期时间,t = 时间,?= 猜测,或 '_'/'-' 跳过该列。
如果您知道文件中的总列数,您可以这样做:
my_read <- function(..., tot_cols, skip_cols=numeric(0)) {
csr <- rep("?",tot_cols)
csr[skip_cols] <- "_"
csr <- paste(csr,collapse="")
read_csv(...,col_types=csr)
}
Run Code Online (Sandbox Code Playgroud)
如果您事先不知道总列数,您可以向此函数添加代码以仅读取文件的第一行并计算返回的列数...
FWIWskip参数可能不会做你认为它做的事情(它跳过行而不是选择/取消选择列):正如我读到的?readr::read_csv()那样,似乎没有任何方便的方法来跳过和/或包含特定的列(按名称或按索引) ) 除非通过某些特殊机制,例如上面建议的;这可能值得在readr问题列表上进行功能请求/讨论?(例如添加cols_include和/或cols_exclude可以通过名称或位置指定的参数?)