小编Nat*_*son的帖子

R - 如何创建重复的自定义 Ifelse 函数

我非常熟悉 R 的标准 ifelse 语句,以及如何创建嵌套的 ifelse 语句。但是,我想创建一个“更好”的版本,这样我就不必多次复制/粘贴 ifelse。

以这个嵌套的 ifelse 语句为例:

df <- data.frame(b = 1:5)

df$a <- ifelse(df$b == 1,1,
        ifelse(df$b == 2,2,
        ifelse(df$b == 3,3,4)))
Run Code Online (Sandbox Code Playgroud)

相反,我想做的是创建一个函数,就像我可以这样调用:

df$a <- myFunction(df$b == 1,1,
                   df$b == 2,2,
                   df$b == 3,3,4)
Run Code Online (Sandbox Code Playgroud)

我希望该函数能够获取我输入的参数数量,从而知道要包含多少 ifelse 语句,然后将参数插入正确的位置,直到我想要的数量为止。

仍然有一些重复,但是在创建更长的嵌套 ifelse 语句时,最好不必重复那段代码,然后尝试跟踪结束括号的。

if-statement r

5
推荐指数
1
解决办法
894
查看次数

R功能 - 未指定时打印

我看到还有另一个相关问题,但答案不是我要找的.我想要一个可以分配给一个对象的函数,但是即使在分配时仍然会打印输出,但不能双重打印它.

在这种情况下:

fun <- function(x) {
print(x+1)
x+1
}
a <- fun(3)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它将保存到a,它将打印到控制台,这是我想要的.

但在这种情况下:

fun(3)
Run Code Online (Sandbox Code Playgroud)

它会打印到控制台两次.有没有办法从案例1中获得所需的结果,而不需要在案例2上进行双重打印?

r function

3
推荐指数
1
解决办法
160
查看次数

Python创建h2o框架的副本

我非常习惯R的h2o框架,但是在python中适应h2o的某些方面有些麻烦。

我知道您可以使用.copy()方法创建熊猫数据框的副本,以便在更新新数据框时也不会更新原始数据框。水框架是否具有类似的功能?更复杂的是,h2o帧似乎无法按照功能本地/全局环境规则运行。

下面是一个示例,看来,如果仅我可以创建框架的.copy或使函数本地环境不更新全局环境,就可以解决我的问题。如果我在R中创建相同的对象,那么它的行为将完全符合预期,并且实际上并未修改原始h2o框架中的列,那么如何使python以相同的方式工作?

##### A FUNCTION TO CHANGE THE VALUE OF A COLUMN
def test_func(train_df,
              var):

    train_df[var] = train_df[var].log()

    return(train_df)

##### TRY TO CREATE A NEW COPY OF THE FRAME WITH THE COLUMN CHANGED
new_df = test_func(train_df = old_df,
                   var = 'target')

##### THE COLUMN IN BOTH new_df AND old_df has both been changed. 
Run Code Online (Sandbox Code Playgroud)

python h2o

2
推荐指数
1
解决办法
711
查看次数

如何在python包中使用全局变量

我有几个 python 函数,我试图将它们创建到一个包中。每个函数都存在于自己的 python 文件中,并使用全局变量将一些对象返回到全局环境,其中一些对象被其他 python 函数使用。

当这些函数是在 python 控制台中定义的独立函数时,它们工作得很好,但是当我将它们全部放入 python 包中时,全局变量不再作为全局变量返回。

为什么使用包文件定义的函数不返回全局变量/如何绕过这个?

一个非常简单的例子:

python_function1.py

def function1(x):
    global new_table
    new_table = x
Run Code Online (Sandbox Code Playgroud)

python_function2.py

def function2(new_table):
    global new_table2
    new_table2 = new_table
Run Code Online (Sandbox Code Playgroud)

python global-variables package

0
推荐指数
1
解决办法
1330
查看次数

标签 统计

python ×2

r ×2

function ×1

global-variables ×1

h2o ×1

if-statement ×1

package ×1