为什么我指定为数字的R中的数据框列变为字符?

时间:2017-02-09 13:51:25

标签: r dataframe type-conversion

我使用以下代码初始化R中的数据框:

pcts <- data.frame(group=character(),
           bonus.type=character(),
           success.rate=double(),
           stringsAsFactors = FALSE)

然后我用以下内容将行添加到数据框中:

pcts[nrow(pcts)+1,] <- c(paste(varname,gname,sep="="), btype, pct)

但是,当我从函数返回pcts时,success.rate列是字符值。要在数学运算中使用此列中的值,我需要使用as.double或as.numeric函数。我可以对代码进行任何更改,以免发生这种情况吗?

1 个答案:

答案 0 :(得分:1)

尝试单独运行命令的右侧而不将其分配给pcts

这是强制发生的地方 - c创建一个原子向量,它只能有一种类型(这里,所有东西都被强制为character)。

您应该传递list(R中最基本的对象用于处理多种类型),或者更好的是,使用rbind

pcts = rbind(pcts, data.frame(group = paste(varname,gname,sep="="), 
                              bonus.type = btype, 
                              success.rate = pct))