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

使用循环中的变量转换R数据帧,r,loops,conditional,dataframe,R,Loops,Conditional,Dataframe,我试图用列替换R数据帧中的值。我想循环遍历dataframe的给定列列表,并将所有“Yes”值替换为1,将所有其他值替换为0 我尝试使用transform()和ifelse()函数来实现这一点,如下所示: # List of selected Columns: ColumnNames = c("Frigori", "Microond" , "Arca", "Aspira") # Replace Values in dataframe for(i in 1:length(ColumnNames)

我试图用列替换R数据帧中的值。我想循环遍历dataframe的给定列列表,并将所有“Yes”值替换为1,将所有其他值替换为0

我尝试使用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))
}
#选定列的列表:
ColumnNames=c(“Frigori”、“Microond”、“Arca”、“Aspira”)
#替换数据帧中的值
用于(i/1:长度(列名称)){

dataframe代码实际上可以简化为一条没有循环的短线,或者完全可以简化为
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

dataframe实际上,代码可以简化为一条没有循环的短线,或者完全可以简化为
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
dataframe模拟数据:

data <- data.frame(matrix(ifelse(runif(40)>.5,"YES",letters[1:26]), 10, 4))
data.5,“是”,字母[1:26]),10,4)
假设要更改列X2和X4

cols <- c("X2","X4")
data[,cols] <- apply(data[cols],2,function(x) ifelse(x=="YES",1,0))
cols模拟数据:

data <- data.frame(matrix(ifelse(runif(40)>.5,"YES",letters[1:26]), 10, 4))
data.5,“是”,字母[1:26]),10,4)
假设要更改列X2和X4

cols <- c("X2","X4")
data[,cols] <- apply(data[cols],2,function(x) ifelse(x=="YES",1,0))
cols