循环获取数据帧列表

时间:2014-08-06 13:07:16

标签: r for-loop

我有类似的情况:

    data1<-data.frame(a=c(1,2),b=c(3,4))
    data2<-data.frame(a=c(5,6),b=c(7,8))

    for(df in list(data1, data2)){
       df[,"a"]<-as.character(df[,"a"])
    }
    mode(data1$a)
    [1] "numeric"

我想知道为什么循环无法改变公共变量a的模式?以及如何实现它?

1 个答案:

答案 0 :(得分:1)

您正在分配临时副本。规范的方法:

mylist <- list(data1, data2)
mylist <- lapply(mylist, function(df) {
  df$a <- as.character(df$a) 
  df})
mode(mylist[[1]]$a)
#[1] "character"

如果你坚持for循环:

mylist <- list(data1, data2)
for(i in seq_along(mylist)){
  mylist[[i]]$a <- as.character(mylist[[i]]$a)
}
mode(mylist[[1]]$a)
#[1] "character"