使用变量名称列表删除数据框中的列
Deleting columns in a data frame using a list of variable names
我有一个生成标准公式(即 y~x1+x2)的自动脚本,我想根据这些变量筛选出我的数据。
到目前为止我已经走到这一步了,但是我遇到了一个我不太明白的症结:
#Example data
df <- data.frame(x=1:5, y=2:6, z=3:7, u=4:8)
df
x y z u
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
4 4 5 6 7
5 5 6 7 8
#Example formula
ex_form = "x~y+u"
#Delete the ~ and add a + sign to be consistent
step1 = gsub("~","+", ex_form)
#Remove + signs
step2 = strsplit(step1, "\+")
#Final list of variables
step3 = unlist(step2)
我见过的大多数解决方案都是这样的:
#Create list of variables
mylist = c("x", "y", "u")
#Cut data
temp = df[ ,mylist]
temp
x y u
1 1 2 4
2 2 3 5
3 3 4 6
4 4 5 7
5 5 6 8
但是这个解决方案不太适合自动化...所以我需要从现有的结果跳到那个结果。有什么想法吗?
注意:标签是我的猜测。
如果您不将公式放在 " "
之间,它将被识别为公式,并且可以使用 all.vars()
从中提取变量。
ex_form = x~y+u #Without quotes it is a formula, check str(ex_form)
df[, all.vars(ex_form)]
# x y u
#1 1 2 4
#2 2 3 5
#3 3 4 6
#4 4 5 7
#5 5 6 8
我是不是遗漏了什么,或者只是 temp <- df[,step3]
return 完全按照您说的去做?
我有一个生成标准公式(即 y~x1+x2)的自动脚本,我想根据这些变量筛选出我的数据。
到目前为止我已经走到这一步了,但是我遇到了一个我不太明白的症结:
#Example data
df <- data.frame(x=1:5, y=2:6, z=3:7, u=4:8)
df
x y z u
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
4 4 5 6 7
5 5 6 7 8
#Example formula
ex_form = "x~y+u"
#Delete the ~ and add a + sign to be consistent
step1 = gsub("~","+", ex_form)
#Remove + signs
step2 = strsplit(step1, "\+")
#Final list of variables
step3 = unlist(step2)
我见过的大多数解决方案都是这样的:
#Create list of variables
mylist = c("x", "y", "u")
#Cut data
temp = df[ ,mylist]
temp
x y u
1 1 2 4
2 2 3 5
3 3 4 6
4 4 5 7
5 5 6 8
但是这个解决方案不太适合自动化...所以我需要从现有的结果跳到那个结果。有什么想法吗?
注意:标签是我的猜测。
如果您不将公式放在 " "
之间,它将被识别为公式,并且可以使用 all.vars()
从中提取变量。
ex_form = x~y+u #Without quotes it is a formula, check str(ex_form)
df[, all.vars(ex_form)]
# x y u
#1 1 2 4
#2 2 3 5
#3 3 4 6
#4 4 5 7
#5 5 6 8
我是不是遗漏了什么,或者只是 temp <- df[,step3]
return 完全按照您说的去做?