Error in `$<-.data.frame`(`*tmp*`, Year, value = integer(0))

同样的代码,为什么不同的数据会出现错误,怎么解决这个问题:Error in $<-.data.frame(*tmp*, Year, value = integer(0)) :
替换数据里有0行,但数据有186

img

以下内容部分参考ChatGPT模型:


这个错误是因为你在尝试替换一个数据框中的列,但是替换的值为0行,导致出现错误。这可能是因为你的替换数据没有正确地匹配到原始数据框中的行。你可以先检查一下替换数据框和原始数据框的行数是否匹配,或者尝试使用merge函数将两个数据框按照指定的列合并起来,然后再进行替换操作。

例如,假设原始数据框为df1,包含Year和Value两列,替换数据框为df2,也包含Year和Value两列。你可以使用如下代码将两个数据框按照Year列合并起来:

merged_df <- merge(df1, df2, by = "Year", all.x = TRUE)

这会将df1和df2按照Year列合并起来,并将结果保存在merged_df中。参数all.x = TRUE表示保留df1中所有的行,即使在df2中没有匹配到对应的行。然后,你可以使用如下代码替换merged_df中的Value列:

merged_df$Value.x[!is.na(merged_df$Value.y)] <- merged_df$Value.y[!is.na(merged_df$Value.y)]

这会将merged_df中Value.x列的值替换为Value.y列的值,但只会替换那些在Value.y列中不为NA的行。最后,你可以将替换后的结果保存回原始数据框中:

df1$Value <- merged_df$Value.x

这样就完成了替换操作。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快