无法用R创建一个愚蠢的向量列表

时间:2017-11-25 00:38:46

标签: r dataframe rbind

我无法理解为什么我的数据框架正在处理stringsAsFactors。你能帮忙吗?

我有:

>  frequentPatterns <- data.frame(
    pattern = character(),
    occurrences = numeric(),
    stringsAsFactors = FALSE
)

从终端我执行以下操作:

> obs2 = c()
> obs2$pattern <- "TAGCAA"
> obs2$count <- 5
> frquentPatterns <- rbind(frequentPatterns,obs2)

首次执行上述行会正确地将值加载到数据框中。第二次运行,它会产生警告

In `[<-.factor`(`*tmp*`, ri, value = "AGAAGCGAGATT") :
  invalid factor level, NA generated

我想,并且已阅读并阅读,“stringsAsFactors = FALSE”应该导致rbind不会尝试将字符值视为因素。我吸烟了吗?这不是我的意思吗?我错过了什么:)提前感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

stringsAsFactors仅适用于数据框的初始创建。除了这种误解之外,还有其他事情你后来做错了。

你开始创建obs2就好像它将成为一个向量,但它实际上只是NULL。我想你会发现添加一个整数count会导致它被强制转换为列表(而不是数据帧)。不要将rbind数据框添加到列表中。如果您要这样做(增长对象),(并且您不应该增长对象),rbind两个数据框:

> rbind(frequentPatterns,data.frame(pattern = 'AGAA',count = 5,stringsAsFactors = FALSE))
  pattern count
1    AGAA     5

最后,在编写代码时,几乎没有必要受到药物的影响而犯错误。我从个人经历中知道这一点。 ;)