我想创建一个几乎是数据框架的类,有一些增强功能(额外的功能,额外的属性),我想知道最好的方法是什么.该类基本上是一个数据框,但有一些额外的属性,例如该数据框的模式(下面命名为"form",自动派生,表示为数据框,用于将数据框转换为正确的类型),还有其他几件事.当用户在其他不识别其特殊类型的函数中使用此对象时,我希望它们处理对象的data.frame部分.做这个的最好方式是什么?
我发现的两种方法都不令人满意; 我列出了他们以及我仍然看到并试图解决的问题; 问题是:做我想做的最好的方法是什么?
方法1,使用"data.frame"作为"基础"插槽 (受此SO帖子的启发)
setClass("formhubData", representation(form="data.frame"), contains="data.frame")
fd <- new('formhubData', data.frame(x=c(1,2)), form=data.frame(name='x', type='select one', label='X'))
Run Code Online (Sandbox Code Playgroud)
这种方法允许我做以下事情:
fd$x >> 1 2
names(fd) >> "x"
Run Code Online (Sandbox Code Playgroud)
[更新:事实证明"分解"是由我的环境造成的,我用不同的参数反复调用setClass('formhubData',...).在新的R会话中,以下所有函数都按预期工作.]
但它很快崩溃了:
nrow(fd) >> NULL
colnames(fd) >> NULL
Run Code Online (Sandbox Code Playgroud)
与上面链接的帖子不同,即使简单is.data.frame也不适用于我
is.data.frame >> FALSE
Run Code Online (Sandbox Code Playgroud)
方法2,使用"数据"插槽(灵感来自SP)
setClass("formhubData", representation(data="data.frame", form="data.frame"))
fd <- new('formhubData', data=data.frame(x=c(1,2)), form=data.frame(name='x', type='select one', label='X'))
Run Code Online (Sandbox Code Playgroud)
我失去了默认定义:
fd$x >> NULL
names(fd) >> integer(0)
Run Code Online (Sandbox Code Playgroud)
但是,至少我可以重新定义它们中的大多数(仍然需要了解[,[[等等):
dim.formhubData <- function(x) dim(x@data)
names.formhubData <- function(x) names(x@data)
nrow(fd) >> 2
names(fd) >> "x"
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法表达这样一个事实:对于任何采用data.frame的方法,我的类应该用作其@data插槽的直通.我觉得这样的事情需要 *.formhubData <- function(x, ...) *(x, …
我正在尝试在该点处为我的绘图添加切线,x = 30并且我想计算 处切线的 x 交点y = 0.08。
我已经找到了一个非常有用的例子,我尝试使用它,但由于某种原因它不适用于y = 0.08. 我不明白predict()函数中 deriv 的含义,也不明白pred0 和 pred1 之间的实际区别。有人可以解释一下吗?
x <- seq(0,40)
y <- dnorm(seq(0,40), mean=25, sd=5)
plot(x, y)
spl <- smooth.spline(y ~ x)
lines(spl, col="green")
newx <- 30
pred0 <- predict(spl, x=newx, deriv=0)
pred1 <- predict(spl, x=newx, deriv=1)
yint <- pred0$y - (pred1$y*newx)
xint <- -yint/pred1$y
xint
plot(x, y)
abline(h=0, col="red")
lines(spl, col="red")
points(pred0,col="red", pch=19)
lines(x, yint + pred1$y*x)
points(xint, 0, col="red", pch=19)
Run Code Online (Sandbox Code Playgroud)
我在字符数组中的JSON中有以下数字:
[1544018118438041139,162.0,38.0,0.023529414,1.0,2131230815,1]
library(jsonlite)
fromJSON(
'[1544018118438041139,162.0,38.0,0.023529414,1.0,2131230815,1]'
)
Run Code Online (Sandbox Code Playgroud)
收益:
[1] 1544018118438041088.000000000000000000000
162.000000000000000000000 38.000000000000000000000 [4] 0.023529413999999998497
1.000000000000000000000 2131230815.000000000000000000000 [7] 1.000000000000000000000
我想让它返回正确的确切时间(大号:1544018118438041139)
请告知如何使其工作.
我想使用SoX库将语音转换为机器人语音(例如,星际争霸游戏的歌利亚语音)。
我在网络上找到了机器人语音的以下顺序,但并没有产生机器人语音。
过载10回波0.8 0.8 5 0.7回波0.8 0.7 6 0.7回波0.8 0.7 10 0.7回波0.8 0.7 12 0.7回波0.8 0.88 12 0.7回波0.8 0.88 30 0.7回波0.6 0.6 60 0.7
发出机器人声音需要什么效果?你能告诉我一系列的效果和选择吗?
提前致谢。
这是我的数据集:
set.seed(327)
ID <- seq(1:50)
mou <- sample(c(2000, 2500, 440, 4990, 23000, 450, 3412, 4958, 745, 1000),
50, replace=TRUE)
calls <- sample(c(50, 51, 12, 60, 90, 16, 89, 59, 33, 23, 50, 555),
50, replace=TRUE)
rev <- sample(c(100, 345, 758, 44, 58, 334, 888, 205, 940, 298, 754),
50, replace=TRUE)
dt <- data.frame(mou, calls, rev)
Run Code Online (Sandbox Code Playgroud)
我的动机是找到mou调用大于34且小于200且rev大于100且小于400 的平均值.我开始使用dplyr来解决这个问题,但我不太确定如何在过滤器内正确使用所需的表达式功能.
dt %>% filter(???) %>% summarize(mean_mou=mean(mou))
Run Code Online (Sandbox Code Playgroud)
你能否指导一下如何在过滤器中正确构建这个表达式.
我想readr在阅读时将带有包的列解析为正确的类型。
难度:字段之间用分号(;)分隔,而逗号(,)用作小数点。
library(readr)
# Test data:
T <- "Date;Time;Var1;Var2
01.01.2011;11:11;2,4;5,6
02.01.2011;12:11;2,5;5,5
03.01.2011;13:11;2,6;5,4
04:01.2011;14:11;2,7;5,3"
read_delim(T, ";")
# A tibble: 4 × 4
# Date Time Var1 Var2
# <chr> <time> <dbl> <dbl>
# 1 01.01.2011 11:11:00 24 56
# 2 02.01.2011 12:11:00 25 55
# 3 03.01.2011 13:11:00 26 54
# 4 04:01.2011 14:11:00 27 53
Run Code Online (Sandbox Code Playgroud)
因此,我认为解析过程可以这样工作,但是我总是收到错误消息:
read_delim(T, ";", cols(Date = col_date(format = "%d.%m.%Y")))
# Error: expecting a string
Run Code Online (Sandbox Code Playgroud)
同样在这里:
read_delim(T, ";", cols(Var1 = col_double())) …Run Code Online (Sandbox Code Playgroud) 我是 R 新手,需要使用包getnfac中的函数PANICr。而且该函数似乎只接受一个xts对象作为其第一个参数。然而,在我读了一些书之后,我仍然不明白什么xts是对象。谁能告诉我如何将 a 转换matrix为xts对象?
下面我使用return矩阵作为第一个参数。因此我只需要转换return为一个xts对象。
getnfac(return,143,"BIC3")
Error in getnfac(return, 143, "BIC3") :
x must be an xts object so lags and differences are taken properly
Run Code Online (Sandbox Code Playgroud) 我有一项服务,每500毫秒从服务器轮询一次数据。为此,我用了Observable.interval()。
下面是我的代码。我想为此服务编写单元测试
service.ts:
pollData() {
Observable.interval(500).mergeMap(() =>
this._http
.get(url, { headers: headers })
.map((resp: Response) => resp.json())
});
Run Code Online (Sandbox Code Playgroud)
服务规格:
it('should get the response correctly', async(inject(
[SomeService, MockBackend], (service, mockBackend) => {
mockBackend.connections.subscribe((connection: MockConnection) => {
connection.mockRespond(new Response(new ResponseOptions({ body:
mockResponse})));
});
const result = service.pollData();
result.subscribe(response => {
expect(response).toEqual(mockResponse);
});
}
)));
Run Code Online (Sandbox Code Playgroud)
在执行ng测试时出现错误:
错误:超时-jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时内未调用异步回调。
r ×6
angular ×1
audio ×1
biginteger ×1
csv ×1
dplyr ×1
intersection ×1
json ×1
karma-runner ×1
numeric ×1
plot ×1
readr ×1
s4 ×1
sox ×1
spline ×1
synthesizer ×1
unit-testing ×1
voice ×1
xts ×1