R如何循环数据帧?

hub*_*rth 10 for-loop r

假设有许多数据帧需要对它们执行相同的操作.例如:

prefix <- c("Mrs.","Mrs.","Mr","Dr.","Mrs.","Mr.","Mrs.","Ms","Ms","Mr")
measure <- rnorm(10)
df1 <- data.frame(prefix,measure)
df1$gender[df1$prefix=="Mrs."] <- "F"
Run Code Online (Sandbox Code Playgroud)

当相邻行中的值为"Mrs."时,将创建一个名为gender的指示符变量.在R中循环字符串变量的一般方法是从这里改编而来,as.name()添加了从"i"中删除引号的函数:

dflist <- c("df1","df2","df3","df4","df5")

for (i in dflist) { 
  as.name(i)$gender[as.name(i)$prefix=="Ms."] <- "F"
  }
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用.有什么建议?

Hon*_*Ooi 10

将所有数据框放入列表中,然后循环lapply遍历它们.从长远来看,这对你来说会容易得多.

dfList <- list(df1=df1, df2=df2, ....)

dfList <- lapply(dfList, function(df) {
    df$gender[df$prefix == "Mrs."] <- "F"
    df
})

dfList$df1
Run Code Online (Sandbox Code Playgroud)