【发布时间】:2018-07-18 07:59:58
【问题描述】:
我的数据集中有几个变量需要以完全相同的方式重新编码,还有几个其他变量需要以不同的方式重新编码。我尝试编写一个函数来帮助我解决这个问题,但我遇到了麻烦。
library(dplyr)
recode_liberalSupport = function(arg1){
arg1 = recode(arg1, "1=-1;2=1;else=NA")
return(arg1)
}
liberals = c(df$var1, df$var4, df$var8)
for(i in unique(liberals)){
paste(df$liberals[i] <- sapply(liberals, FUN = recode_liberalSupport))
}
R studio 在这方面工作了大约 5 分钟,然后给了我这个错误消息:
Error in `$<-.data.frame`(`*tmp*`, liberals, value = c(NA_real_, NA_real_, :
replacement has 9 rows, data has 64600
In addition: Warning messages:
1: Unknown or uninitialised column: 'liberals'.
2: In df$liberals[i] <- sapply(liberals, FUN = recode_liberalSupport) :
number of items to replace is not a multiple of replacement length
任何帮助将不胜感激!谢谢
【问题讨论】:
-
您可能想在这里使用
mutate_at而不是apply。我认为recode的语法也不正确。提供样本数据是获得有效答案的最佳方式 -
一个问题是你的 for 循环。
unique(liberals)的值将少于liberals -
这有意义吗
paste(df$liberals[i] <- sapply(liberals, FUN = recode_liberalSupport))? (问题在于paste。)