我一直在寻找网络和Stackoverflow,但没有找到这个问题的答案.你会如何从Node.js执行Powershell脚本?该脚本与Node.js实例位于同一服务器上.
我正在创建一个计算表达式 (CE),以简化建模者计划的定义。我想定义仅在CE中可用的函数。在此示例中,编译器表示自定义操作step和branch的使用不正确,但我不明白为什么。编译器所说的只是它们没有被正确使用。
请注意,我知道我可以在 CE 之外定义
step和来完成此操作。branch这个问题明确是关于使用自定义运算符的。我想隔离这个逻辑,以便它仅在 CE 上下文中可用。
type Step =
| Action of string
| Branch of string list list
type Plan =
{
Name : string
Steps : Step list
}
type PlanBuilder () =
member _.Yield _ =
{
Name = ""
Steps = []
}
member _.Run state = state
[<CustomOperation "name">]
member _.Name (state, name) =
{ state with Name = name }
[<CustomOperation "steps">]
member _.Steps …Run Code Online (Sandbox Code Playgroud) 有没有办法在R中编写流水线函数,其中一个函数的结果立即传递到下一个函数?我来自F#并且非常欣赏这种能力,但还没有找到如何在R中做到这一点.它应该很简单,但我找不到如何.在F#中它看起来像这样:
let complexFunction x =
x |> square
|> add 5
|> toString
Run Code Online (Sandbox Code Playgroud)
在这种情况下,输入将被平方,然后添加5,然后转换为字符串.我希望能够在R中做类似的事情,但不知道如何做.我已经搜索了如何做这样的事情,但没有遇到任何问题.我想要导入数据,因为我通常必须导入它然后过滤.现在我在多个步骤中执行此操作,并且非常希望能够以F#管道方式执行某些操作.
我想从apply()函数返回多个值并将它们放在R中的单独列中但我不断收到错误.我想要做的是这样的:
experiments$result1, experiments$result2, experiments$result3 <- apply(experiments, 1,
function(row)
#Some analysis here
#return x, y, and z for column result1, result2, and result3
x, y, z
)
Run Code Online (Sandbox Code Playgroud)
也许这是解决问题的错误方法.实验是一个包含多列数据的数据框.我想附加作为每行分析结果的列,但我不知道如何在没有循环的情况下做到这一点,这对于R来说不是惯用的.感谢提前帮助.
所以这里有一些更精确的代码.
experiments$result1, experiments$result2, experiments$result3 <- apply(experiments, 1, function(row)
x <- row["startingTemp"]*2
y <- row["startingTemp"]*3
z <- row["startingTemp"]*4
return (list(x, y, z))
)
Run Code Online (Sandbox Code Playgroud)
"startingTemp"字段是我的"实验"数据框中的一列.我收到的错误是'闭包'类型不是子集,而且找不到对象'z'.
我正在使用F#interactive,我正在计算一些大型列表和数组,而我宁愿没有交互式窗口发布所有这些信息.有没有办法抑制输出?
具体来说,我正在开发单线程和多线程算法,并评估在何时从单线程函数更改为多线程函数变得更有效.我想让F#Interactive报告函数的运行时间,我一直在使用#time,但是我不想在将大量数据矩阵打印到屏幕时滚动回来.如果有办法在保持交互式环境写出矩阵的同时获取时序数据,我将非常感激.
我经常遇到的一个问题是需要从data.table中查找任意行.昨天我遇到了一个问题,我试图加速循环并使用profvis我发现从中查找data.table是循环中最昂贵的部分.然后我决定尝试找到在R中进行单项查找的最快方法.
数据通常采用data.table带有字符类型的键列的a形式.其余列通常是数值.我试图创建一个随机表,其特征与我经常处理的相似,这意味着> 100K行.我比较了本机列表,data.table包和hash包.本机列表与data.table单个项目查找性能相当.Hash似乎快了两个数量级.测试由随机抽样的10组10,000个密钥组成,以提供访问行为的变化.每种查找方法都使用相同的密钥集.
最终我的首选是要让data.table的行查找更快,而不是必须创建我的数据的哈希表,或者确定它不能完成,只需在我必须快速查找时使用哈希包.我不知道是否可能,但是你可以创建一个对data.table中行的引用的哈希表,以允许使用哈希包快速查找吗?我知道在C++中可以使用这种类型的东西,但据我所知,由于缺少指针,R不允许这种事情.
总结一下:1)我是否正确地使用data.table进行查找,因此这是单行查找所需的速度?2)是否可以创建指向data.table行的指针散列,以便以这种方式快速查找?
Windows 10 Pro x64
R 3.2.2
data.table 1.9.6
哈希2.2.6
Intel Core i7-5600U,16 GB RAM
library(microbenchmarkCore) # install.packages("microbenchmarkCore", repos="http://olafmersmann.github.io/drat")
library(data.table)
library(hash)
# Set seed to 42 to ensure repeatability
set.seed(42)
# Setting up test ------
# Generate product ids
product_ids <- as.vector(
outer(LETTERS[seq(1, 26, 1)],
outer(outer(LETTERS[seq(1, 26, 1)], LETTERS[seq(1, 26, 1)], paste, sep=""),
LETTERS[seq(1, 26, 1)], paste, sep = "" …Run Code Online (Sandbox Code Playgroud) 我一直在R做一些数据分析,我试图找出如何使我的数据适合3参数Weibull分布.我找到了如何使用2参数Weibull来完成它,但是在找到如何使用3参数进行操作方面做得不够.
以下是我使用包中的fitdistr函数来拟合数据的方法MASS:
y <- fitdistr(x[[6]], 'weibull')
Run Code Online (Sandbox Code Playgroud)
x[[6]] 是我的数据的子集,y是我存储拟合结果的地方.
我一直在研究带有 F# 计算表达式的 State Monad,我也在尝试利用自定义操作。我得到了一些没有意义的奇怪行为。编译器报告一个值在上面两行声明时不存在。
type State<'a, 's> = ('s -> 'a * 's)
module State =
// Explicit
// let result x : State<'a, 's> = fun s -> x, s
// Less explicit but works better with other, existing functions:
let result x s =
x, s
let bind (f:'a -> State<'b, 's>) (m:State<'a, 's>) : State<'b, 's> =
// return a function that takes the state
fun s ->
// Get the value and next state from …Run Code Online (Sandbox Code Playgroud) 必须有一个简单的方法来做到这一点.我有一个连接到数据库的Powershell脚本,我希望将生成的数据表保存为CSV.这是迄今为止的代码:
$connString = "Provider=msdaora;Data Source=MyDatabase;User Id=test;Password=test
$qry = "select * from employees"
$OLEDBConn = New-Object System.Data.OleDb.OleDbConnection($connString)
$OLEDBConn.open()
$readcmd = New-Object system.Data.OleDb.OleDbCommand
$readcmd.Connection = $OLEDBConn
$readcmd.CommandTimeout = '300'
$readcmd.CommandText = $qry
$da = New-Object system.Data.OleDb.OleDbDataAdapter($readcmd)
$dt = New-Object system.Data.datatable
[void]$da.fill($dt)
$OLEDBConn.close()
Run Code Online (Sandbox Code Playgroud) 我想在F#中使用任务并行库(TPL)来执行许多(> 1000)长时间运行的任务.这是我目前的代码:
Parallel.For(1, numberOfSets, fun j ->
//Long running task here
)
Run Code Online (Sandbox Code Playgroud)
当我开始这时,似乎.NET立即启动所有任务并在它们之间不断反弹.更好的是,如果它继续执行任务,直到完成任务,然后再转移到下一个任务.这将最小化上下文切换.
有没有办法为调度程序提供提示?我知道有可能提供提示,但我找不到明确的例子,或者调度程序已经很聪明,而且只是我认为存在太多的上下文切换.谢谢您的帮助!
f# ×4
r ×4
powershell ×2
.net ×1
closures ×1
csv ×1
data.table ×1
datatable ×1
distribution ×1
hash ×1
monads ×1
node.js ×1
pipeline ×1
statistics ×1
weibull ×1