簡體   English   中英

將不帶引號的列名提供給 R 函數 [rpy2]

[英]Feed unquoted column name to R function [rpy2]

我想在ICCest的幫助下在 Python 中使用ICCest (R 庫ICC一個函數)。

的使用ICCest中R是ICCest(column_a, column_b, data) 但是,無法通過 rpy2 傳遞不帶引號的列名。

如果我執行下面的代碼,

import numpy as np
from rpy2.robjects.vectors import DataFrame
from rpy2.robjects.packages import importr
df = DataFrame.from_object({
    'a': np.arange(20).repeat(5),
    'b': np.arange(100),
})
ICC = importr("ICC")
ICC.ICCest('a', 'b', df)

它會出錯並給出如下警告:

WARNING:rpy2.rinterface_lib.callbacks:R[write to console]: Error in eval(as.name(y), data, parent.frame()) : object 'b' not found
Calls: <Anonymous> -> eval -> eval

WARNING:rpy2.rinterface_lib.callbacks:R[write to console]: In addition: 
WARNING:rpy2.rinterface_lib.callbacks:R[write to console]: Warning message:

WARNING:rpy2.rinterface_lib.callbacks:R[write to console]: In (function (x, y, data = NULL, alpha = 0.05, CI.type = c("THD",  :
WARNING:rpy2.rinterface_lib.callbacks:R[write to console]: 

WARNING:rpy2.rinterface_lib.callbacks:R[write to console]:  passing a character string to 'y' is deprecated since ICC vesion 2.3.0 and will not be supported in future versions. The argument to 'y' should either be an unquoted column name of 'data' or an object

注意最后一行警告。 我什至如何使用 rpy2 傳遞“未加引號的‘數據’列名”?

from rpy2.robjects.vectors import DataFrame, FloatVector
df = DataFrame({
    'a': FloatVector(np.arange(20).repeat(5)),
    'b': FloatVector(np.arange(100)),
})

一旦我將 numpy 數組轉換為FloatVector ,代碼就可以工作了。

此外,最好在此處使用as.nameas.symbol

ICC.ICCest(base.as_name('a'), base.as_name('b'), df)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM