首页 文章

R:将数据帧行转换为字符向量

提问于
浏览
12

Short version:

在尝试将数据帧的单行转换为字符向量时,我不理解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个输出线和正确的方法?非常感谢 .

Background/Purpose:

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

问题: lre() 需要一个向量,向量需要一个确定的数据类型(整数,字符,因子,......) . 我的想法是将数据帧行转换为字符向量,以避免通过转换丢失数据 .

2 回答

  • 8

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

    创建数据框时,默认值是字符是因子 . 如果选择列,则可以清楚地看到这一点

    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?

  • 4

    试试这个:

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

    你的字符串被强制成因子,你已经被显示出因子水平 .

相关问题