我有类似的情况:
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
的模式?以及如何实现它?
答案 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"