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

nil*_*ole 13 string r vector type-conversion

精简版:

在尝试将数据帧的单行转换为字符向量时,我不理解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"
Run Code Online (Sandbox Code Playgroud)

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

背景/目的:

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

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

csg*_*pie 9

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

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

R> mydf[,1]
[1] mystring 2       
Levels: 2 mystring
Run Code Online (Sandbox Code Playgroud)

要避免此行为,请将stringsAsFactors参数设置为FALSE

mydf = data.frame("myvar1"=c("mystring", "2"),
                    "myvar2"=c("mystring", "3"), 
                     stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

您还应该看看这个问题:如何将数据框列转换为数字类型?


cof*_*nky 5

尝试这个:

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

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