【问题标题】:What is the best way to retrieve a column of a data.frame with its column name?用列名检索 data.frame 列的最佳方法是什么?
【发布时间】:2021-01-14 21:35:13
【问题描述】:

如果我使用df$columnName,你只会得到一个没有列名的向量。 这意味着names(df$columnName) --> null

我可以使用df["columnName"],但这有点不方便..因为我必须将 columnName 作为字符串字符传递。

【问题讨论】:

  • 您实际上是在使用$[ 提取不同的对象。 $ 将列提取为向量,而[ 提取新的data.frame 1 列。您是否正在寻找附有名称的矢量?因为那是不可能的。
  • 您可以将列名分配给一个字符串,然后在df[columnNameString] 中使用该字符串。但是请注意,这不会返回列,而是返回子 df,因此带有名称。要返回该列,请使用df[[columnNameString]],输出与df$columnName 相同。
  • 如果您必须使用名称而不能使用字符串,则可以使用subset(df,,columnName)。双逗号是有意的。
  • 在子集columnName 中是名称而不是字符串。但我认为我没有抓住重点..也许我们需要了解更多关于您需要什么或什么为您定义“最佳”的详细信息[时间效率?]

标签: r dataframe vector subset columnname


【解决方案1】:

我更喜欢dplyrselect()

library('dplyr')   
data = df %>% select(columnName)

返回一列数据框。

【讨论】:

    【解决方案2】:

    在回答中形成@Edo 的精彩评论,我们可以使用subset

    subset(x=dat, subset=, select=X1)
    

    或简称:

    subset(dat,,X1)
    #   X1
    # 1  1
    # 2  2
    # 3  3
    

    数据:

    dat <- structure(list(X1 = 1:3, X2 = 4:6, X3 = 7:9, X4 = 10:12), class = "data.frame", row.names = c(NA, 
    -3L))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-26
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多