小编Phi*_*ski的帖子

汇总dplyr中每组的所有其他值

我有一个数据集,其中有成组的个人决策。对于每个人,我需要他/她的小组成员的所有决定的汇总(即总和)。所以说数据看起来像:

set.seed(123)
group_id <- c(sapply(seq(1, 3), rep, times = 3))
person_id <- rep(seq(1,3),3)
decision <- sample(1:10, 9, replace=T)
df <-data.frame(group_id, person_id, decision)
df
Run Code Online (Sandbox Code Playgroud)

结果是:

  group_id person_id decision
1        1         1        3
2        1         2        8
3        1         3        5
4        2         1        9
5        2         2       10
6        2         3        1
7        3         1        6
8        3         2        9
9        3         3        6
Run Code Online (Sandbox Code Playgroud)

我需要产生这样的东西:

  group_id person_id decision others_decision
1        1         1        3 13
2        1         2        8  8
3        1 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

7
推荐指数
1
解决办法
192
查看次数

获取调用方法的类名

我知道如何获取调用方法名称(从这里:如何在被调用的方法中获取调用方的方法名称?)

import sys
print sys._getframe().f_back.f_code.co_name
Run Code Online (Sandbox Code Playgroud)

我想得到的是这个方法所属的类名(假设它在类中).因此,如果:

def get_some_info():
    print('Class name of caller:', XXX)

class Base:
     def my_method(self):
         get_some_info()

class A(Base):
     pass

class B(Base):
     pass

a = A()
b = B()
a.my_method()
b.my_method()
Run Code Online (Sandbox Code Playgroud)

应该返回:

 ... A
 ... B
Run Code Online (Sandbox Code Playgroud)

我该怎么办xxx

我试过(使用信息_getframe)做类似的事情:

 sys._getframe().f_back.f_code.__self__
Run Code Online (Sandbox Code Playgroud)

但它不起作用

更新:

我不能将类名传递给被调用的函数(否则这很容易,但感谢所有提出此解决方案的人!)

python python-3.x

5
推荐指数
2
解决办法
1040
查看次数

如何在 Vue Composition API 中使用 ref 验证表单

使用Options API,我像这样验证了我的表单:

模板:

<v-form ref="form" v-model="valid" lazy-validation @submit.prevent>
...
Run Code Online (Sandbox Code Playgroud)

脚本:

methods: {
  validate() {
    this.$refs.form.validate();
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,使用 new Composition API,我如何调用validate()表单?

vue.js vuetify.js vuejs3 vue-composition-api

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

如何在 R 中重用长链管道运算符的一部分?

我有一组管道操作符 ( %>%)链,用不同的数据集做不同的事情。

例如:

dataset %>%
   mutate(...) %>%
   filter(...) %>%
   rowwise() %>%
   summarise() %>%
   etc...
Run Code Online (Sandbox Code Playgroud)

如果我想重用这些链的某些部分,有没有办法做到这一点,而不仅仅是将它包装成一个函数?例如(显然是伪代码):

subchain <- filter(...) %>%
   rowwise() %>%
   summarise() 

# and then instead of the chain above it would be:
dataset %>%
   mutate(...) %>%
   subchain() %>%
   etc...

Run Code Online (Sandbox Code Playgroud)

r dplyr

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

在 Boto3 中创建权限的问题

为了通过 mTurk 向 SQS 发送消息,SendMessage应该给予相应的权限。在文档中,他们说 Principal 应该是mturk-requester.amazonaws.com. 因此,有效的策略如下所示:

"Principal": {
  "Service": "mturk-requester.amazonaws.com"
 },
Run Code Online (Sandbox Code Playgroud)

这可以通过 Boto3.SQS.addPermission 来完成。像那样:

response = client.add_permission(
   QueueUrl='string',
   Label='string',
    AWSAccountIds=[
       'string',
   ],
  Actions=[
      'string',
  ]
 )
Run Code Online (Sandbox Code Playgroud)

但我不明白如何将正确的 Principal 添加到AWSAccountIds字段中。我在mturk-requester.amazonaws.com那里使用的所有尝试都失败了。

我究竟做错了什么?

mechanicalturk boto amazon-web-services aws-sdk boto3

4
推荐指数
1
解决办法
965
查看次数

React jsconfig.json 忽略路径

jsconfig.json我的反应应用程序的根目录中有以下内容:

{
    "compilerOptions": {
      "baseUrl": "./src",
      "paths": {
        "rmv": ["components/rmv/*"]
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

并且文件夹helper.jsx中有一个文件./src/components/rmv

但我尝试像这样直接导出它: import Helper from 'rmv/helper' 失败并出现错误:

Failed to compile
Module not found: Can't resolve 'rmv/helper' 
Run Code Online (Sandbox Code Playgroud)

import Helper from 'components/rmv/helper'有效。为什么?PS:我也尝试过:

"paths": {
        "rmv/*": ["components/rmv/*"]
      }
Run Code Online (Sandbox Code Playgroud)

也不行。

这是最小的可重现示例:github.com/chapkovski/trouble_with_jsconfig

具体来说,这些行: https://github.com/chapkovski/trouble_with_jsconfig/blob/e37c8c216eac0da7c70023f7fba47eea54973176/src/App.js#L4-L5

reactjs tsconfig react-scripts

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

我可以在 Django 中运行后台进程而不启动并行进程吗?

这是一个非常幼稚的问题,但我觉得我不了解有关 django 和 python 中异步/后台任务的一些基本知识。

我尝试复制 django-background-tasks ( https://github.com/collinmutembei/django-background-tasks-example )提供的一个简单示例,以使 django 在实际运行 60 秒后执行后台任务. 但我想这同样适用于任何其他后台任务管理器,例如 Celery 或 Huey

这个例子非常简单——一旦用户访问了 url,一个简单的打印消息的函数就会被执行而不会阻塞主 django 进程,60 秒后

  from background_task import background
  from logging import getLogger

  logger = getLogger(__name__)

  @background(schedule=60)
  def demo_task(message):
      logger.debug('demo_task. message={0}'.format(message))
Run Code Online (Sandbox Code Playgroud)

问题是我真的不了解基础知识。除非我启动一个单独的(或分离的)进程,否则它不会运行python manage.py process_tasks。我应该总是这样做以使后台任务工作,还是有一种方法可以在不启动并行进程的情况下做到这一点?

如果我应该启动一个并行进程,我可以从 django 代码内部进行吗?就像是:

    import subprocess

    process = subprocess.Popen(['python', 'manage.py','process_tasks'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

python django parallel-processing celery

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

是否可以恢复(返回到旧方法)python 猴子补丁

我使用一个专门的 python 模块,它在运行时修改一些 Django 类方法(又名猴子修补)。如果我需要这些“旧”版本,是否可以“返回”它们并覆盖猴子补丁?

例如,导入这些类的初始版本之类的东西?

以下是如何在包中完成修补的示例:

from django.template.base import FilterExpression

def patch_filter_expression():
    original_resolve = FilterExpression.resolve
    def resolve(self, context, ignore_failures=False):
        return original_resolve(self, context, ignore_failures=False)

    FilterExpression.resolve = resolve
Run Code Online (Sandbox Code Playgroud)

python monkeypatching

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

将列表作为参数传递给 django 标签

我在 Django 中有一个自定义包含标签,我需要将一个列表作为参数传递给那里。沿着这些路线的东西:

 {% my_tag paramA='asdf' paramB='fdsa' listparams=['X', 'Y'] %}
Run Code Online (Sandbox Code Playgroud)

这当然不起作用,因为 Django 不知道如何处理以这种方式传递的列表。

我还可以捕获一些一般的东西list_,然后将它们组合到服务器端的列表中:

 {% my_tag paramA='asdf' paramB='fdsa' list_1='X' list_2='Y' list_3='Z' %}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更好的方法来处理这个问题。

django django-templates django-template-filters

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

找到数据框中变量更改其值的位置

我在 R 中有很多数据框,它们看起来像这样:

A   B
1   0
2   0
3   0
4   1
5   1
6   1   
Run Code Online (Sandbox Code Playgroud)

因此,在 3 和 4 之间,B 将值从 0 更改为 1。R返回AwhereB更改值的值的最有效方法是什么?

数据中B的值只更改一次,并A进行排序(从 1 到 n)。

r

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

覆盖password_validation消息

我使用UserCreationForm来创建新用户.

from django.contrib.auth.forms import UserCreationForm

class RegistrationForm(UserCreationForm):
      class Meta:
       model = User
       fields = ['username', 'first_name', 'last_name', 'email',  'is_active']
Run Code Online (Sandbox Code Playgroud)

UserCreationForm自动添加两个字段(Password1Password2).如果密码太短,则会引发错误,告诉它.或者,如果它太简单或常见.这是通过django.contrib.auth.password_validation.

我想知道我是否可以覆盖这些错误的消息.

现在密码验证的源代码是:

def validate(self, password, user=None):
    if len(password) < self.min_length:
        raise ValidationError(
            ungettext(
                "This password is too short. It must contain at least %(min_length)d character.",
                "This password is too short. It must contain at least %(min_length)d characters.",
                self.min_length
            ),
            code='password_too_short',
            params={'min_length': self.min_length},
        )
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在表单定义中使用此代码来覆盖此错误消息时,标签会更改,但error_messages保持不变:

password1 = forms.CharField(label='New Label', error_messages={'password_too_short': 'My error message for …
Run Code Online (Sandbox Code Playgroud)

django django-authentication

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

如何在dplyr中进行跨行计算?

有一个包含嵌套信息的数据框.让我们说出每所学校的学生人数,A班学生人数和B班学生人数.因此,学生= n.pupilsA + n.pupilsB + other_pupils

a <- data.frame(
  city = c(rep('New York',3), rep('Washington',3)),
  n = c(5, 2, 1, 5, 2, 1),
  name = c(
    'pupils',
    'classA',
    'classB',
    'pupils',
    'classA',
    'classB'
  )
)
Run Code Online (Sandbox Code Playgroud)

输出:

        city n   name
1   New York 5 pupils
2   New York 2 classA
3   New York 1 classB
4 Washington 5 pupils
5 Washington 2 classA
6 Washington 1 classB
Run Code Online (Sandbox Code Playgroud)

是否有一种聪明的方法(使用dplyr,大概是)进行小组操作,这将增加每个组"其他",这将是"学生"和"学生 - A级"+"学生 - B级"之间的差异.所以结果会是这样的:

        city   type npupils
1   New York classA       2
2   New York …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyr

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

改变离子范围滑块手柄的颜色

如果我尝试将 ion range-slider 的默认颜色(可在此处获得:https : //github.com/IonDen/ion.rangeSlider)从红色(默认)更改为蓝色,如下所示:

.irs-slider.single {
    background: blue;
}
Run Code Online (Sandbox Code Playgroud)

它变成正方形:

在此处输入图片说明

(最初它看起来像一条细红线: 在此处输入图片说明)

我究竟做错了什么?

演示

https://jsfiddle.net/chapkovski/xpvt214o/995048/

.irs-slider.single {
    background: blue;
}
Run Code Online (Sandbox Code Playgroud)
$(".js-range-slider").ionRangeSlider({
        type: "single",
        min: 0,
        max: 1000,
        from: 200,
        to: 500,
        grid: true
    });
Run Code Online (Sandbox Code Playgroud)
.irs-slider.single {
    background: blue;
}
Run Code Online (Sandbox Code Playgroud)

css rangeslider ion-range-slider

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