如何 select 文本文件(在 R 中)中列出的 data.frame 中的所有变量?
How to select all variables in a data.frame that are listed in a text file (in R)?
我的编程问题是我在一个Ascii格式文件中有一个字符串列表,这些字符串是变量名,例如variables.txt
,例如
A
B
C
D
应从 R
中的 data.frame
中选择与 variables.txt
中的名称匹配的那些变量。例如:
var = c("A", "B", "C", "D")
(dat=data.frame(A=1,B=2,C=3,D=4,E=5,F=6))
A B C D E F
1 1 2 3 4 5 6
其次是
dat[,var]
A B C D
1 1 2 3 4
所以问题可能归结为将 variables.txt
读入 var
。如果我给:
var <- read.table("variables.txt")
结果又是一个data.frame
,不能用于子设置。完成这项任务最有效的方法是什么?
编辑: 我发现
var <- as.vector(as.matrix(read.table("variables.txt")))
成功了。但也许还有更有效的方法。
您可以尝试这种方式,此处将 var 输入为 data.frame:您需要明确向量引用以将其用于子集化:
dat<-data.frame(A=1,B=2,C=3,D=4,E=5,F=6)
var<-data.frame(variable=c("A", "B", "C", "D"))
dat[,names(dat) %in% var$variable]
A B C D
1 2 3 4
使用逻辑向量进行子集化工作正常。
如果您需要指定顺序,请尝试 'match':
var$variable<-rev(var$variable)
dat[,match(var$variable, names(dat))]
D C B A
4 3 2 1
我的编程问题是我在一个Ascii格式文件中有一个字符串列表,这些字符串是变量名,例如variables.txt
,例如
A
B
C
D
应从 R
中的 data.frame
中选择与 variables.txt
中的名称匹配的那些变量。例如:
var = c("A", "B", "C", "D")
(dat=data.frame(A=1,B=2,C=3,D=4,E=5,F=6))
A B C D E F
1 1 2 3 4 5 6
其次是
dat[,var]
A B C D
1 1 2 3 4
所以问题可能归结为将 variables.txt
读入 var
。如果我给:
var <- read.table("variables.txt")
结果又是一个data.frame
,不能用于子设置。完成这项任务最有效的方法是什么?
编辑: 我发现
var <- as.vector(as.matrix(read.table("variables.txt")))
成功了。但也许还有更有效的方法。
您可以尝试这种方式,此处将 var 输入为 data.frame:您需要明确向量引用以将其用于子集化:
dat<-data.frame(A=1,B=2,C=3,D=4,E=5,F=6)
var<-data.frame(variable=c("A", "B", "C", "D"))
dat[,names(dat) %in% var$variable]
A B C D
1 2 3 4
使用逻辑向量进行子集化工作正常。 如果您需要指定顺序,请尝试 'match':
var$variable<-rev(var$variable)
dat[,match(var$variable, names(dat))]
D C B A
4 3 2 1