我是R的新手,尝试编写一个函数来清理和更新带有条件的数据帧列(检查提供的列表中的值是否存在)。如果我使用列名称进行硬编码,代码将起作用,但在使用该函数时将不起作用。我的功能一定有问题我无法找到原因,有人可以帮忙 ?
我的工作代码(survey_2017数据框的列“col_1”将更新):
for (i in 1:length(survey_2017[,"col_1"]))
{if(survey_2017[,"col_1"][i]%in% yes_no_list[["y"]])
{survey_2017[,"scol_1"][i]<-"y"}
else if (survey_2017[,"col_1"][i]%in% yes_no_list[["n"]])
{survey_2017[,"col_1"][i]<-"n"}
else
survey_2017[,"col_1"][i]<-"na"
}
我写了一个试图做同样事情的函数。在收到来自thelatemail的建议之后,它现在正在通过添加return语句返回(survey_2017 [,col_name2])
yes_no_update<-function(col_name2){
for (i in 1:length(survey_2017[,col_name2])) {
if(survey_2017[,col_name2][i]%in% yes_no_list[["y"]]){survey_2017[,col_name2][i]<-"y"}
else if (survey_2017[,col_name2][i]%in% yes_no_list[["n"]]){survey_2017[,col_name2][i]<-"n"}
else
survey_2017[,col_name2][i]<-"na"
}
return (survey_2017[,col_name2])
}
运行该函数后,它不执行列更新。(现在正在运行)
yes_no_update("col_1")