【问题标题】:R: Combine character columns of data.frame into one vectorR:将data.frame的字符列组合成一个向量
【发布时间】:2015-07-25 00:40:27
【问题描述】:

我正在使用 R 并尝试将数据帧的两个字符列组合成一个向量。让我们说,这是我的数据

a = c("one", "two", "three")
b = c("four", "five", "six")
data = data.frame(a,b)

现在我试试

c(data$a, data$b)

c(data[,"a"], data[,"b"])

两个都给我 [1] 1 3 2 2 1 3

这是什么?

我希望并且我想要与 from 相同的输出

c(a,b)

[1] "one" "two" "three" "four" "five" "six"

【问题讨论】:

    标签: r string dataframe character


    【解决方案1】:

    当您创建数据框时,您的向量被存储为因子,而不是字符。你必须用

    指定你想要的字符
     data = data.frame(a,b, stringsAsFactors=F)
    

    【讨论】:

    • 谢谢。 +1。有两个同时到达的答案真的很难决定接受哪一个。
    • @lanenok,这个答案从源头上解决了问题,而我的答案在您遇到此类问题时提供了解决方案。因此,它们在概念上是不同的,您应该使用这种概念上的差异来决定哪个最适合您的情况。
    【解决方案2】:

    那是因为您的列是因素。转换成字符,就可以正常工作了:

    > data[] <- lapply(data, as.character)
    > c(data$a, data$b)
    [1] "one"   "two"   "three" "four"  "five"  "six"  
    

    当然,你总是可以这样做:

    > as.character(unlist(data))
    [1] "one"   "two"   "three" "four"  "five"  "six"  
    

    【讨论】:

    • 谢谢。 +1。有两个同时到达的答案真的很难决定接受哪一个。
    • 在我真正的问题中,我从数据框开始(不是两个向量,比如问题中的一个小的可重复示例)。所以我决定知道如何将数据框转换为字符对我帮助更大。
    猜你喜欢
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    相关资源
    最近更新 更多