假设我有一个带有以下标题的csv(当然也有一些真实的内容):
a1,a2,b1,a3,c1,b2
Run Code Online (Sandbox Code Playgroud)
如何只选择特定的列,比如以a?开头的列?
所以我只有以下标题
a1,a2,a3
Run Code Online (Sandbox Code Playgroud)
使用这个我可以指定一个范围,但我想要的列不是连续的:
myColumns = csv[c(1:3)]
Run Code Online (Sandbox Code Playgroud)
myColumns = csv[,c("a1", "a2", "a3")]
Run Code Online (Sandbox Code Playgroud)
获取那些列.如果要选择以"a" 开头的所有列(编辑):
csv[,grep("^a", names(myColumns))]
Run Code Online (Sandbox Code Playgroud)
如果要直接从csv文件中将选定列读入R而不读取整个文件,可以尝试使用此方法fread().
library(data.table)
fread(file, select = grep("^a", names(fread(file, nrow = 0L))))
Run Code Online (Sandbox Code Playgroud)
这只读取文件的第一行(标题),然后用于grep()确定以值开头的值的a位置.然后我们在列选择参数中使用该结果select来获取我们想要的列.
让我们尝试一下mtcars,只查找以开头的列d.
## write mtcars to file
write.csv(mtcars, row.names = FALSE, quote = FALSE, file = "mtcars.csv")
## now read only the columns beginning with 'd'
DT <- fread("mtcars.csv", select = grep("^d", names(fread("mtcars.csv", nrow = 0L))))
## have a look
head(DT)
# disp drat
# 1: 160 3.90
# 2: 160 3.90
# 3: 108 3.85
# 4: 258 3.08
# 5: 360 3.15
# 6: 225 2.76
Run Code Online (Sandbox Code Playgroud)