spsurvey::grts 需要具有 None 命名列表的 rpy2 实现
rpy2 implementation with None named list is required by spsurvey::grts
我有一个包含单个层的形状文件,我正在对其应用 a-survey::grts 方法。这在 R 中工作得很好,但是在 rpy2 中有一个 'None' 命名列表让我很困惑。
dsgn <- list(None=list(panel=c(Base=50), seltype="Equal"))
grts(design=dsgn,
DesignID='newpts',
type.frame='finite',
src.frame='shapefile',
in.shape=interest,
att.frame=att,
shapefile=TRUE,
out.shape="newtest",
prj=file.name)
需要注意的是 None 命名列表,它是一个 design requirement 具有 1 层的列表。当我把它放入 rpy2 时,问题就来了,因为 python 是 python。
dsgn = robjects.r.list(None=robjects.r.listlist(panel=c(Base=50), seltype="Equal"))
这让我犯了语法错误:关键字不能是表达式。我明白为什么 python 告诉我这个,但我在 rpy2 文档中找不到任何解决方法,也找不到其他人 运行 遇到同样挑战的地方。我已经尝试了各种形式的 r.None、Null 等,并完全摆脱了 None 层(这会导致只有 1 个层引起的错误)。非常欢迎为单个层条件创建解决方法或在 rpy2 中具有 None 命名列表的解决方案!
None
确实是 Python 中的保留字,但几乎没有解决方法。
在下面的示例中,R 函数 c
是:
c = robjects.r.c
1- 在 Python 中解决这个问题的一般方法是使用 dict
dsgn = robjects.r.list(**{'None': robjects.r.listlist(panel=c(Base=50),
seltype="Equal")})
https://rpy2.github.io/doc/v3.2.x/html/robjects_functions.html#callable
2-方法rcall
dsgn = robjects.r.list.rcall(
('None', robjects.r.listlist(panel=c(Base=50), seltype="Equal"))),
globalenv
)
https://rpy2.github.io/doc/v3.2.x/html/robjects_functions.html#rcall
3- 环绕函数
make_dsgn = robjects.r('function(...) {list(None=list(...))}')
dsgn = make_dsgn(panel=c(Base=50, seltype='Equal'))
我有一个包含单个层的形状文件,我正在对其应用 a-survey::grts 方法。这在 R 中工作得很好,但是在 rpy2 中有一个 'None' 命名列表让我很困惑。
dsgn <- list(None=list(panel=c(Base=50), seltype="Equal"))
grts(design=dsgn,
DesignID='newpts',
type.frame='finite',
src.frame='shapefile',
in.shape=interest,
att.frame=att,
shapefile=TRUE,
out.shape="newtest",
prj=file.name)
需要注意的是 None 命名列表,它是一个 design requirement 具有 1 层的列表。当我把它放入 rpy2 时,问题就来了,因为 python 是 python。
dsgn = robjects.r.list(None=robjects.r.listlist(panel=c(Base=50), seltype="Equal"))
这让我犯了语法错误:关键字不能是表达式。我明白为什么 python 告诉我这个,但我在 rpy2 文档中找不到任何解决方法,也找不到其他人 运行 遇到同样挑战的地方。我已经尝试了各种形式的 r.None、Null 等,并完全摆脱了 None 层(这会导致只有 1 个层引起的错误)。非常欢迎为单个层条件创建解决方法或在 rpy2 中具有 None 命名列表的解决方案!
None
确实是 Python 中的保留字,但几乎没有解决方法。
在下面的示例中,R 函数 c
是:
c = robjects.r.c
1- 在 Python 中解决这个问题的一般方法是使用 dict
dsgn = robjects.r.list(**{'None': robjects.r.listlist(panel=c(Base=50),
seltype="Equal")})
https://rpy2.github.io/doc/v3.2.x/html/robjects_functions.html#callable
2-方法rcall
dsgn = robjects.r.list.rcall(
('None', robjects.r.listlist(panel=c(Base=50), seltype="Equal"))),
globalenv
)
https://rpy2.github.io/doc/v3.2.x/html/robjects_functions.html#rcall
3- 环绕函数
make_dsgn = robjects.r('function(...) {list(None=list(...))}')
dsgn = make_dsgn(panel=c(Base=50, seltype='Equal'))