我无法理解为什么我的数据框架正在处理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不会尝试将字符值视为因素。我吸烟了吗?这不是我的意思吗?我错过了什么:)提前感谢您的帮助!!
答案 0 :(得分:1)
stringsAsFactors
仅适用于数据框的初始创建。除了这种误解之外,还有其他事情你后来做错了。
你开始创建obs2
就好像它将成为一个向量,但它实际上只是NULL
。我想你会发现添加一个整数count
会导致它被强制转换为列表(而不是数据帧)。不要将rbind
数据框添加到列表中。如果您要这样做(增长对象),(并且您不应该增长对象),rbind
两个数据框:
> rbind(frequentPatterns,data.frame(pattern = 'AGAA',count = 5,stringsAsFactors = FALSE))
pattern count
1 AGAA 5
最后,在编写代码时,几乎没有必要受到药物的影响而犯错误。我从个人经历中知道这一点。 ;)