我知道这里有几个类似的问题,但是似乎没有一个问题可以解决我遇到的确切问题。
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 脚本,它通过链接到 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)