在 R 中使用散列包时无法将类型 'closure' 强制转换为类型 'character' 的向量
cannot coerce type 'closure' to vector of type 'character' while using hash package in R
我正在尝试将一段 python 代码转换为 R。在 python 中,使用了字典中的字典。所以我正在尝试利用 R 中的散列包,
Python代码:
titles = {
'NAME' :{
'exact':['NAME']
,'partial':[]
}
, 'Dt' :{
'exact':['Dt']
,'partial':[]
}
, 'CC' :{
'exact':[]
,'partial':[]
}
}
而 R 代码是,
library(hash)
titles = hash(("NAME" = list("exact"=list('NAME'),"partial"=list())),
("Dt" = list("exact"=list('Dt'),"partial"=list())),
("CC" = list("exact"=list(),"partial"=list())))
但是当我尝试在散列环境中使用此代码时,出现以下错误。
Error in as.vector(x, "character") :
cannot coerce type 'closure' to vector of type 'character'
当我尝试用列表替换散列时,它工作正常。但是,我使用 key/value pair(hash package) 主要是因为我必须使用内部字典,我的意思是根据外部字典键更改内部字典值。知道为什么我会收到此错误或任何其他方法。
更新下面以使问题更加清楚。
为了进一步解释,我将其创建为 key/value 对(散列包),主要是因为我将在大量使用 key/value 对的词典上使用以下逻辑。我不确定这是否可以在没有 key/value 对的情况下在 R 列表中轻松完成。
another_dict = {}
multiples_dict = {}
adj_title = 'Dt'
for outer_key,outer_value in titles.iteritems():
for exact in outer_value['exact']:
if exact == adj_title:
another_dict[actual_title] = outer_key
multiples_dict[outer_key] = multiples
for partial in inner_dict['partial']:
if partial in adj_title:
another_dict[actual_title] = outer_key
multiples_dict[outer_key] = multiples
提前致谢。
你需要去掉每对 key/value 周围的括号,如:
library(hash)
titles = hash("NAME" = list("exact"=list('NAME'),"partial"=list()),
"Dt" = list("exact"=list('Dt'),"partial"=list()),
"CC" = list("exact"=list(),"partial"=list()))
当您包含括号 hash( (a=b) )
时,对象 (a=b)
将作为表达式而不是 key/value 对
传递
我正在尝试将一段 python 代码转换为 R。在 python 中,使用了字典中的字典。所以我正在尝试利用 R 中的散列包,
Python代码:
titles = {
'NAME' :{
'exact':['NAME']
,'partial':[]
}
, 'Dt' :{
'exact':['Dt']
,'partial':[]
}
, 'CC' :{
'exact':[]
,'partial':[]
}
}
而 R 代码是,
library(hash)
titles = hash(("NAME" = list("exact"=list('NAME'),"partial"=list())),
("Dt" = list("exact"=list('Dt'),"partial"=list())),
("CC" = list("exact"=list(),"partial"=list())))
但是当我尝试在散列环境中使用此代码时,出现以下错误。
Error in as.vector(x, "character") :
cannot coerce type 'closure' to vector of type 'character'
当我尝试用列表替换散列时,它工作正常。但是,我使用 key/value pair(hash package) 主要是因为我必须使用内部字典,我的意思是根据外部字典键更改内部字典值。知道为什么我会收到此错误或任何其他方法。
更新下面以使问题更加清楚。
为了进一步解释,我将其创建为 key/value 对(散列包),主要是因为我将在大量使用 key/value 对的词典上使用以下逻辑。我不确定这是否可以在没有 key/value 对的情况下在 R 列表中轻松完成。
another_dict = {}
multiples_dict = {}
adj_title = 'Dt'
for outer_key,outer_value in titles.iteritems():
for exact in outer_value['exact']:
if exact == adj_title:
another_dict[actual_title] = outer_key
multiples_dict[outer_key] = multiples
for partial in inner_dict['partial']:
if partial in adj_title:
another_dict[actual_title] = outer_key
multiples_dict[outer_key] = multiples
提前致谢。
你需要去掉每对 key/value 周围的括号,如:
library(hash)
titles = hash("NAME" = list("exact"=list('NAME'),"partial"=list()),
"Dt" = list("exact"=list('Dt'),"partial"=list()),
"CC" = list("exact"=list(),"partial"=list()))
当您包含括号 hash( (a=b) )
时,对象 (a=b)
将作为表达式而不是 key/value 对