选择数据框列,其中列名存储在字符串中

时间:2016-01-13 17:20:38

标签: r string dataframe

我有一个串联的字符串,其中包含列名:

col_names = paste(c("Age", "Sex", "City", "Name"), collapse=', ')
col_names
[1] "Age, Sex, City, Name"

我还有一个data frame=df,它有100个变量。 如何使用col_namesdf选择字符串(col_names)中的列?

2 个答案:

答案 0 :(得分:1)

我们可以使用scan获取vector个名称,使用trimws删除尾随/前导空格,并使用它来对数据集进行子集化。

df[trimws(scan(text=col_names, sep=",", what=''))]

或另一个选项是str_extract

library(stringr)
df[str_extract_all(col_names, '\\w+')[[1]]]

数据

df <- data.frame(Age= c(5, 3, 25), Sex = c("M", "F", 
 "M"), Value = 1:3, City= c("Brookings",
 "Mumbai", "Paris"), Name = LETTERS[1:3])

答案 1 :(得分:1)

使用strsplit功能有帮助吗?它会通过某种分隔符将您的字符串拆分为字符向量。在这里,我使用函数通过字符串中的变量对数据框进行子集化(由akrun提供)。

df <- data.frame(Age= c(5, 3, 25), Sex = c("M", "F", 
 "M"), Value = 1:3, City= c("Brookings",
 "Mumbai", "Paris"), Name = LETTERS[1:3])

df[,strsplit(col_names, ", ")[[1]]]

   Age Sex      City Name
1   5   M Brookings    A
2   3   F    Mumbai    B
3  25   M     Paris    C