df <- data.frame(a = -(1:5), b = 1:5)
df$c[which(df$a>0)] <- 7
#Error in `$<-.data.frame`(`*tmp*`, "c", value = numeric(0)) :
# replacement has 0 rows, data has 5
相反,第二个语句应该是:
rm(df)
df <- data.frame(a = -(1:5), b = 1:5)
df$c[df$a>0] <- 7
df
# a b c
# 1 -1 1 NA
# 2 -2 2 NA
# 3 -3 3 NA
# 4 -4 4 NA
# 5 -5 5 NA
plot(likert(KnowledgeAndInterest[,c(1:2)], grouping = KnowledgeAndInterest[,3]), legend.position="right") +
scale_fill_manual(values = brewer.pal(n=5,"RdYlBu"), breaks = c("None at all", "A little", "A moderate amount", "A lot", "A very lot")) +
guides(fill = guide_legend(title=""))
2条答案
按热度按时间lawou6xi1#
您没有正确地设置数据框的子集,我建议您修复子集设置,而不是试图忽略错误以下是一个示例,说明创建新列的错误方法会导致您获得的错误:
相反,第二个语句应该是:
为了回答你关于捕捉脚本中的错误的问题,R有一组try/catch函数:
您可以在R文档和Hadley威克姆的 Advanced R 在线手册中获得更多有关如何使用此函数的示例:http://adv-r.had.co.nz/Exceptions-Debugging.html
owfi6suc2#
我在使用带分组的likert包时遇到了这个错误。
KnowledgeAndInterest是一个只包含3列数据的数据框,它是专门为likert创建的,我花了一段时间才发现错误是由于第3列(分组列)中的不完整数据(NA值)造成的,在调用likert之前,将数据框简化为只使用完整的案例,从而解决了这个问题:
我希望这对任何有类似问题的人都有帮助。