我使用以下代码初始化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函数。我可以对代码进行任何更改,以免发生这种情况吗?
答案 0 :(得分:1)
尝试单独运行命令的右侧而不将其分配给pcts
。
这是强制发生的地方 - c
创建一个原子向量,它只能有一种类型(这里,所有东西都被强制为character
)。
您应该传递list
(R中最基本的对象用于处理多种类型),或者更好的是,使用rbind
:
pcts = rbind(pcts, data.frame(group = paste(varname,gname,sep="="),
bonus.type = btype,
success.rate = pct))