【发布时间】:2018-03-07 13:34:24
【问题描述】:
我有几个数据框,其中只有几个变量彼此不同。大多数情况下它们是相同的。 我想在一个循环中准备变量,所以我不必分别为我的所有数据框指定每个变量。但是我遇到了一些问题。
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
我尝试谷歌寻求帮助,但我不明白它的解释:(你能帮我理解我做错了什么以及如何解决它吗?
【问题讨论】:
-
$-operator 不能动态工作。使用 i[,"ID"]
-
您还需要将 clist 中的数据帧作为对象名称而不是字符串。
-
嗨安德烈!感谢您的提示!但是,它仍然会产生错误。我现在将其更改为:
clist <- c(data, data_error, data_RT) for (i in clist) { i[,"ID"] <- as.factor(i[,"ID"]) },但它告诉我Error in[.default(i, , "ID") : incorrect number of dimensions。这让我很困惑,因为如果我只是用“数据”替换“i”(正如我打算循环执行的那样)data[,"ID"] <- as.factor(data[,"ID"]),它确实有效......关于尺寸不匹配可能源于何处的任何想法?
标签: arrays r string loops dataframe