如何在R中选择带有星号的变量

如何在R中选择带有星号的变量,r,select,dplyr,special-characters,R,Select,Dplyr,Special Characters,我想从R中的csv文件中选择一些变量。我使用了这个selectgender*,age*,但得到了错误-找不到对象。我试着选择'gender*','age*',然后选择starts_with gender,starts_with age,但两者都不起作用。有人知道如何选择带有星号的变量吗?非常感谢 从dplyr中选择可能被从任何其他软件包中选择屏蔽,因为这工作正常。使用::指定packagename,或者在仅加载dplyr的新R会话上执行此操作 要选择以特定字符串开头的列名列表,可以使用dplyr

我想从R中的csv文件中选择一些变量。我使用了这个selectgender*,age*,但得到了错误-找不到对象。我试着选择'gender*','age*',然后选择starts_with gender,starts_with age,但两者都不起作用。有人知道如何选择带有星号的变量吗?非常感谢

从dplyr中选择可能被从任何其他软件包中选择屏蔽,因为这工作正常。使用::指定packagename,或者在仅加载dplyr的新R会话上执行此操作


要选择以特定字符串开头的列名列表,可以使用dplyr中的starts_with函数。为了举例说明,我们将选择以字符串Sepal开头的两列,如Sepal.Length和Sepal.Width

…以及输出:

> select(iris,starts_with("Sepal")) %>% head()
  Sepal.Length Sepal.Width
1          5.1         3.5
2          4.9         3.0
3          4.7         3.2
4          4.6         3.1
5          5.0         3.6
6          5.4         3.9
>
> head(iris[,grepl("^Sepal",names(iris))])
  Sepal.Length Sepal.Width
1          5.1         3.5
2          4.9         3.0
3          4.7         3.2
4          4.6         3.1
5          5.0         3.6
6          5.4         3.9
>
我们可以用grepl和正则表达式在baser中做同样的事情

# base R version
head(iris[,grepl("^Sepal",names(iris))])
…以及输出:

> select(iris,starts_with("Sepal")) %>% head()
  Sepal.Length Sepal.Width
1          5.1         3.5
2          4.9         3.0
3          4.7         3.2
4          4.6         3.1
5          5.0         3.6
6          5.4         3.9
>
> head(iris[,grepl("^Sepal",names(iris))])
  Sepal.Length Sepal.Width
1          5.1         3.5
2          4.9         3.0
3          4.7         3.2
4          4.6         3.1
5          5.0         3.6
6          5.4         3.9
>
还请注意,如果使用read.csv在R中创建数据框,则会将列标题中出现的*转换为


无法复制namesiris[2]%head%>%selectgender*是否尝试将*用作通配符?要选择看起来像gender1',gender2`等的变量,您是否也要将data.frame或tible传递给select?您的代码和数据到底是什么样子的。如果您包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,那么就更容易为您提供帮助。感谢akrun!我对R很陌生,这是我第一次认识iris。我应该把数据框放在哪里?你能再解释一下吗?谢谢。@Xiaotong重点是在后面的刻度之间加上带有特殊字符的名字。至于iris,它是R附带的内置数据集之一。它多次被用于提供自包含的示例,因为它混合了数字和分类变量。你们不必把它放在任何地方,它就在那个里,当你们需要的时候,它就是一个测试数据集。谢谢你们,问题解决了!我刚刚发现read.csv自动将我所有的特殊字符(包括空格和星星)转换为句点。所以我用错名字了@Xiaotong iin在read.csv中,有一个参数check.names,默认情况下为TRUE,您可以将其更改为FALSE,然后它将是不带参数的确切列名。@akrun谢谢!
# confirm that * is converted to . in read.csv()
textFile <- 'v*1,v*2
1,2
3,4
5,6'
data <- read.csv(text = textFile,header = TRUE)
# see how illegal column name * is converted to . 
names(data)
> names(data)
[1] "v.1" "v.2"
>