我目前遇到了一个问题,我试图从一些上游计算中创建一个值表。通常,我一直假设每次创建这些数据框时至少会有一个值为 1;但我遇到过一个并非如此的例子,最后得到了一个看起来像这样的表:
df <- data.frame(
Experiment_Batch = c(rep("008_1", 83),
rep("008_6", 82),
rep("520_0", 2),
rep("944_10", 84),
rep("944_8", 85),
rep("944_9", 72)),
Overall = rep(0, 408)
)
Run Code Online (Sandbox Code Playgroud)
这导致了以下下游处理:
df %>%
dplyr::count(Experiment_Batch, Overall) %>%
tidyr::spread(Overall, n, fill = 0) %>%
dplyr::select(Experiment_Batch, `1`)
Run Code Online (Sandbox Code Playgroud)
出错:Error in overscope_eval_next(overscope, expr) : object '1' not found。
我试过使用tryCatch()and exists(),但我似乎无法让它们正常工作。理想情况下,这一切都可以使用管道运算符优雅地处理。我已经知道我可以创建一个对象并根据需要在我的工作流程中添加一些 if-else 语句,但我想知道是否有一种......“更有趣”的方法来处理这个问题,所以我不会不得不分手工作。
我正在自学Python,我一直在使用Codecademy作为工具.我已经理解了在字典中写某些键的基本前提,但我意识到使用循环向字典添加键会更容易,特别是如果以后必须修改代码,并且每个字典具有相同的值.但是,我无法让我的代码返回我想要的值:
students = {"lloyd" : [], "alice" : [], "tyler" : []}
for student in students:
student = {
"name" : [],
"homework" : [],
"quizzes" : [],
"tests" : []
}
print students
Run Code Online (Sandbox Code Playgroud)
但这回归:
{'tyler': [], 'lloyd': [], 'alice': []}
None
Run Code Online (Sandbox Code Playgroud)
我如何设置它,以便...它......实际上有效,我在学生的名字下有"名字","作业","测试"和"测验"?