【问题标题】:How this R syntax works?这个 R 语法是如何工作的?
【发布时间】:2019-02-15 16:44:38
【问题描述】:

例如,如果我们在 R 中有一个名为 x 的数据框,其中有一列有一些级别,并且我们希望将这些级别作为字符串获取,这应该可以:

levels(x$column)[x$column]

谁能解释一下这个 R 语法是如何工作的?

感谢您的帮助

【问题讨论】:

    标签: r string syntax frame levels


    【解决方案1】:

    考虑一个简单的单列数据框:

    df <- data.frame(x=c("a", "b", "c"))
    

    levels() 函数为输入的所有字符级别。然后,我们使用级别索引本身对该字符向量进行子集化:

    levels(df$x)[df$x]
    [1] "a" "b" "c"
    

    【讨论】:

    • 我没有得到那个答案。为什么levels(df$x)[c("a", "b", "c")] 不做同样的事情? df$x不会像你说的那样产生索引,而是一个字符向量。
    • @PascalIv 因为在您的版本中,您传递的是字符向量,而不是一个因素。试试levels(df$x)[as.factor(c("a", "b", "c"))],它应该可以工作。
    • 忘记了 stringsAsFactor 的东西。谢谢!
    • 我明白你想解释什么,但我期待一个解释这种索引的答案,因为在我看来,将它与其他编程语言进行比较并不直观。你可以索引一个比levels(df$x)更长的向量,例如:levels(df$x)[as.factor(c("a", "b", "c", "c"))])对我来说很奇怪,也许我不太习惯 R,所以这就是原因......但无论如何感谢您的帮助!
    • @HéctorOlivera 是的,但在这种情况下,第四个元素将返回 NA,因为该级别在因子 df$x 中不存在。
    猜你喜欢
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    相关资源
    最近更新 更多