这是一些示例数据
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)
谢谢!
我已经编写了一个函数,它的工作原理与我在 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)
但这会导致更多错误并且不起作用。任何帮助,将不胜感激!谢谢你!