【问题标题】:Find data by multiple variable names in R在R中通过多个变量名查找数据
【发布时间】:2017-05-16 04:18:32
【问题描述】:

我对 R 中的变量名称有疑问。

在我的数据集中,我有一个包含 70 个变量名称的字符列表,我想在数据中找到相应的数据(包括标题)。

例如,我使用了数据集 iris。我不想通过 iris$Sepal.Length 选择所有变量,因为我使用的数据集中有 70 个变量。在我的代码中,我可以打印数据,但我正在努力将数据保存为具有相应标题名称的数据框。有人有什么想法吗?

iris
head(iris)
colnames(iris)
b <- list("Sepal.Length","Petal.Length")

i=1
for (i in 1:length(b)){
#print(b[[i]])
print(iris[,c(b[[i]])])
c[,i]<-(iris[,c(b[[i]])])
}

【问题讨论】:

  • 如果要选择某些列,将b定义为向量b=c("Sepal.Length","Petal.Length"),然后执行iris[,b]。这是你要找的吗?
  • 你想做什么?从数据框中获取某些列?
  • list 是一个很棒的数据结构,因为它允许你使用不同类型的变量——你可以有一个矩阵,然后是一个数据框,然后是一个模型,所有这些都在同一个列表中。当你所有的数据都是同一类型时,只需使用一个向量:c("Sepal.Length", "Petal.Length")
  • 是的,我在自己的数据中有一个变量名称列表,并希望创建一个 data.frame,其中包含这些变量和相应的数据。我认为 Lamia 的代码实际上已经在工作,我也在研究 dplyr。非常感谢您的回答!

标签: r


【解决方案1】:

听起来您正试图从 data.frame 或矩阵中获取 70 列的子集。您拥有的 70 列存储在 list 中。 R 将允许您获取由character 向量命名的列,但不能以list 命名。所以,你可以使用unlist

b <- list("Sepal.Length","Petal.Length")
newTable <- iris[,unlist(b)]

【讨论】:

    【解决方案2】:

    我发现 dplyr 最适合这个。如果你把 iris 变成 tibble

    iris <- as_tibble(iris)
    

    然后您可以使用 dplyr::select 函数按名称(无引号)或按位置选择。您甚至可以使用 1:5 表示法选择第 1 到 5 列。一个很好的起点是:http://r4ds.had.co.nz

    【讨论】:

      【解决方案3】:

      你在找这个吗?

      b <- c("Sepal.Length","Petal.Length")
      New_iris=iris[,b]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多