我有一些数据帧,只有少数变量彼此不同。大多数情况下都是一样的。 我想在循环中准备变量,所以我不必分别为所有数据帧指定每个变量。然而,我遇到了一些问题。
clist <- c("data", "data_error", "data_RT")
我首先列出了数据框的名称
for (i in clist) {
i$ID <- as.factor(i$ID)
i$TMS <- as.factor(i$TMS)
i$bias<- as.numeric(i$bias)
... }
我尝试遍历我想要准备的所有变量。但这是不可能的,我收到一条错误消息:
Error in i$ID : $ operator is invalid for atomic vectors
我尝试谷歌寻求帮助,但我不明白它的解释:(你能帮我理解我做错了什么以及如何解决它?
答案 0 :(得分:2)
您可以使用数据框列表而不是名称向量:
clist <- list(data, data_error, data_RT)
然后遍历列表:
for (i in 1:length(clist)) {
clist[[i]]$ID <- as.factor(clist[[i]]$ID)
clist[[i]]$TMS <- as.factor(clist[[i]]$TMS)
clist[[i]]$bias<- as.numeric(clist[[i]]$bias)
... }
之后,您可以使用
list2env(clist,globalenv())
将数据帧放回到您的全局环境中。不过,我建议你把它们放在列表中。