使用循环中的变量转换R数据帧

1 conditional loops r dataframe

我试图逐列替换R数据帧中的值.我想,虽然循环数据框的列的定列表和0代替1"是"的价值观和所有其他的值.

我尝试使用transform()和ifelse()函数执行此操作,如下所示:

# List of selected Columns:
ColumnNames = c("Frigori", "Microond" , "Arca", "Aspira")

# Replace Values in dataframe
for(i in 1:length(ColumnNames)){
dataframe <- transform(dataframe, ColumnNames[i] = ifelse(Columnames[i] == "Yes", 1, 0))
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常循环外显式的列名,但与阵列,它会给我下面的错误:

Error: unexpected '=' in:
"for(i in 1:length(Appliances)){
dataframe <- transform(dataframe, ColumnNames[i] ="
Run Code Online (Sandbox Code Playgroud)

我不知道这里出了什么问题,但问题必须与变量替换有关.

Ken*_*ams 7

实际上,代码可以简化为一条没有循环的短行或者根本没有apply():

dataframe <- data.frame(a = c("No", "Yes", "No", "No", "Yes"),
                        b = c("Hi", "Hi", "Mom", "Hi", "Mom"),
                        c = c("Yes", "Yes", "Yes", "Yes", "No"))
cols <- c("a","c")
dataframe[,cols] <- as.numeric(dataframe[,cols]=="Yes")
dataframe

  a   b c
1 0  Hi 1
2 1  Hi 1
3 0 Mom 1
4 0  Hi 1
5 1 Mom 0
Run Code Online (Sandbox Code Playgroud)