【问题标题】:R: Turning a data frame row into a character vectorR:将数据框行转换为字符向量
【发布时间】:2014-06-30 14:26:32
【问题描述】:

短版:

我不理解 as.character 在尝试将数据帧的单行转换为字符向量时的行为。

> mydf <- data.frame("myvar1"=c("mystring","2"),"myvar2"=c("mystring","3"))
> mydf # nice!
myvar1   myvar2
1 mystring mystring
2        2        3
> as.character(mydf[1,])
[1] "2" "2"
> as.character(as.vector(mydf[1,]) ) 
[1] "2" "2"

也许有人可以给我一个关于最后 2 行输出和正确方法的解释?非常感谢。

背景/目的:

我想使用lre() 来检测数据帧的一行中连续出现的值(具有不同数据类型的列)。

问题:lre() 需要一个向量,向量需要一个明确的数据类型(整数、字符、因子,...)。我这里的想法是把数据框行变成字符向量,避免通过转换丢失数据。

【问题讨论】:

    标签: string r vector type-conversion


    【解决方案1】:

    您的数据框列不是字符,它们是因素。

    当您创建数据框时,默认情况下字符是因子。如果你选择一个列,你可以清楚地看到这一点

    R> mydf[,1]
    [1] mystring 2       
    Levels: 2 mystring
    

    为避免这种行为,请将 stringsAsFactors 参数设置为 FALSE

    mydf = data.frame("myvar1"=c("mystring", "2"),
                        "myvar2"=c("mystring", "3"), 
                         stringsAsFactors=FALSE)
    

    你也应该看看这个问题:How to convert a data frame column to numeric type?

    【讨论】:

    • 谢谢!我想必须学习一些数据类型的课程。 (y)
    • btw cs + @coffeinjunky :您认为将数据(整数、浮点数等)转换为字符以避免通过转换丢失数据是个好主意吗?还是 R 提供更好的方法?谢谢 :)
    • R 被专业统计学家使用。我认为您不必担心数据丢失 - 如果您这样做了,您可能做错了;)
    • 我没有真正看到将数据转换为字符的任何优点,但有很多缺点,即我不建议这样做。
    • 好的,转换的目的是仅将其用于rle(),以便同化行并检测相同的值。关于更好方法的想法? :)
    【解决方案2】:

    试试这个:

     mydf <- data.frame("myvar1"=c("mystring","2"),"myvar2"=c("mystring","3"), stringsAsFactors=F)
     as.character(mydf[1,])
     [1] "mystring" "mystring"
    

    您的字符串已被强制转换为因子,并且已显示因子水平。

    【讨论】:

      猜你喜欢
      • 2018-04-08
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 2011-02-02
      • 2014-04-10
      • 2017-04-25
      相关资源
      最近更新 更多