我似乎遇到了与seen here相同的问题,所以我开始检查我的帧/矩阵所在的环境。我有一个字符矩阵和一个作为列表导入的表。我已经能够创建一个我已经调试过的用户定义的函数,我可以确认它是一步一步地将字符矩阵中的值分配给需要在列表中进行更改的那些。
{
i = 1
j = NROW(v)
while (i < j) {
if (v[i] %in% Convert[, 1]) {
n <- match(v[i], Convert[, 1])
v[i] <- Convert[n, 2]
}
i = i + 1
}
}
这是代码,以防你需要看看我在做什么。 问题是每当我检查列表或矩阵的环境时,我得到NULL(使用environment())。我尝试使用assign()来创建一个新矩阵。基于上面的链接,似乎这是一个环境问题,但如果使用的列表/矩阵没有环境,那么该做什么呢?
发布说明:我尝试将这些格式转换为不同的格式(使用as.character或as.list),但如果我无法解决环境问题,我也不知道这是否相关上方。
答案 0 :(得分:0)
environment()仅适用于函数,不适用于变量。 实际上,环境函数给出的封闭环境仅对函数有意义,而不是对变量感兴趣的绑定环境。 如果你想要绑定环境使用pryr包
library(pryr)
where("V")
这是一个例子
e<-new.env()
e$test<-function(x){x}
environment(e$test)
你可以看到这里的环境是全局环境,因为你在那里定义了函数,但显然绑定环境(即你找到变量名称的环境)是e。
http://adv-r.had.co.nz/Environments.html
这里要更好地理解问题