小编Liv*_*ius的帖子

在对特定行进行条件调整时动态地对多列进行突变

我知道这里有几个类似的问题,但是似乎没有一个问题可以解决我遇到的确切问题。

set.seed(4)
df = data.frame(
  Key = c("A", "B", "A", "D", "A"),
  Val1 = rnorm(5),
  Val2 = runif(5),
  Val3 = 1:5
)
Run Code Online (Sandbox Code Playgroud)

我想将其中Key ==“ A”的行的value列的值清零。通过a引用列名grep

cols = grep("Val", names(df), value = TRUE)
Run Code Online (Sandbox Code Playgroud)

通常,在这种情况下,要实现我想要的功能,我将使用data.table以下命令:

library(data.table)
df = as.data.table(df)
df[Key == "A", (cols) := 0]
Run Code Online (Sandbox Code Playgroud)

所需的输出是这样的:

  Key      Val1       Val2 Val3
1   A  0.000000 0.00000000    0
2   B -1.383814 0.55925762    2
3   A  0.000000 0.00000000    0
4   D  1.437151 0.05632773    4
5   A  0.000000 0.00000000    0
Run Code Online (Sandbox Code Playgroud)

但是这一次我需要dplyr在每个人都在使用的团队项目中使用它。我刚刚提供的数据是说明性的,我的真实数据是> …

r dplyr data.table

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

从 VBA 启动 R 脚本时保持 Shell/cmd 打开

我有一个 R 脚本,它通过链接到 VBA 脚本的按钮从 Excel 工作簿运行。

问题是,每次 R 脚本遇到错误(比如找不到它应该读取的文件之一),运行 R 脚本的 Shell/cmd 窗口都会立即关闭。问题是你看不到任何关于失败原因的线索。然后我必须通过修改代码并在 RStudio 中运行来手动调试它以查找错误 - 通常我必须为其他不了解 R 的人执行此操作。

我使用的 VBA 代码是从我在这里找到的一篇 SO 帖子中复制和修改的。我对 VBA 不是很精通,也不理解很多代码,所以我正在寻找一个简单的解决方案。我的VBA代码是这样的:

Option Explicit

Public Sub RunRscript()

    ActiveWorkbook.Save

    Dim shell As Object
    Set shell = VBA.CreateObject("WScript.Shell")

    Dim waitTillComplete As Boolean: waitTillComplete = True
    Dim style As Integer: style = 1

    Dim scriptPath As String
    scriptPath = Range("F5").Value

    Dim argument As String
    argument = Range("F3").Value

    Dim path As String
    path = """C:\Program Files\R\R-3.4.2\bin\Rscript.exe"" """ & scriptPath …
Run Code Online (Sandbox Code Playgroud)

excel vba r

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

标签 统计

r ×2

data.table ×1

dplyr ×1

excel ×1

vba ×1