小编Hug*_*den的帖子

在“dplyr”中一次按多列进行过滤

这是一些示例数据

library(tidyverse)

data <- matrix(runif(20), ncol = 4) 
colnames(data) <- c("mt100", "cp001", "cp002", "cp003")
data <- as_tibble(data)
Run Code Online (Sandbox Code Playgroud)

真实的数据集有更多的列,但实际上有很多列都以“cp”开头。我dplyr可以选择所有这些列

data %>%
  select(starts_with("cp"))
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以使用starts_with(或类似的函数)按多列进行过滤,而不必显式地全部写入?我在想这样的事情

data %>%
  filter(starts_with("cp") > 0.2)
Run Code Online (Sandbox Code Playgroud)

谢谢!

r dplyr

6
推荐指数
2
解决办法
8025
查看次数

模块“scipy.sparse”在网状虚拟环境中没有属性“linalg”错误

我已经编写了一个函数,它的工作原理与我在 python 中想要的完全一样,但是当我尝试在 RI 中运行它时,遇到了网状的问题。我已经解决了这个问题并将其简化为这个问题。我在 python 中有这个函数:

def get_largest_eigenvalue(inc_mat):
    eigen_val = scipy.sparse.linalg.eigs(inc_mat, k = 1)
    eigen_val = eigen_val[0] / inc_mat.shape[0]
    return eigen_val
Run Code Online (Sandbox Code Playgroud)

本质上,该函数采用 csr_matrix 并返回其最大特征值。它应该适用于任何 csr_matrix。当我使用网状运行此代码时出现错误,解决此问题将解决我更大的问题。

要在网状中运行此代码,我运行

library(reticulate)
use_virtualenv("default")
Run Code Online (Sandbox Code Playgroud)

我之前运行过此代码以将 scipy 安装到此虚拟环境

virtualenv_install("default", c("scipy"))
Run Code Online (Sandbox Code Playgroud)

然后我用过

source_python("file_name.py")
Run Code Online (Sandbox Code Playgroud)

加载我的所有 python 函数,包括上面的函数。除了上面的函数之外,我加载的所有其他函数都可以完美运行。当我尝试运行它时,我收到以下错误

py_call_impl 中的错误(可调用,dots$args,dots$keywords):AttributeError:模块“scipy.sparse”没有属性“linalg”

我在这里有点超出我的深度,我尝试运行类似的代码

virtualenv_install("default", c("scipy.sparse"))
Run Code Online (Sandbox Code Playgroud)

但这会导致更多错误并且不起作用。任何帮助,将不胜感激!谢谢你!

python r scipy reticulate

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

标签 统计

r ×2

dplyr ×1

python ×1

reticulate ×1

scipy ×1