在R环境中编程时,我使用了rep("[35,40)",1020).这应该给我一个1020次"[35,40]"的列表.但是,结果只包含1019个这些元素.
编程首先在两个向量的复制中完成,但即使我将其拆分它也不起作用.
我尝试使用不同版本的R(R 2.11.1,R 2.9.0,R 2.10.0,R 2.7.2),但它们都没有正常工作.
有没有人知道如果有一个版本的R没有这个bug?或者我如何解决这个问题?
所以这个代码:
> agecats
[1] "(-0.001,5]" "(5,10]" "(10,15]" "(15,20]" "(20,25]"
[6] "(25,30]" "(30,35]" "(35,40]" "(40,45]" "(45,50]"
[11] "(50,55]" "(55,60]" "(60,65]" "(65,70]" "(70,75]"
[16] "(75,80]"
> weightage<-c(0.9,0.9,2.7,3.1,8.9,10.05,10.05,10.2,10.2,9.3,9.3,8.7,7.9,3.15,3.15,1.5)
> weightage
[1] 0.90 0.90 2.70 3.10 8.90 10.05 10.05 10.20 10.20 9.30 9.30 8.70
[13] 7.90 3.15 3.15 1.50
> weightage100<-weightage*100
> weightage100
[1] 90 90 270 310 890 1005 1005 1020 1020 930 930 870 790 315 315
[16] 150
> tosamplefrom<-rep(agecats,weightage100)
> table(tosamplefrom)
tosamplefrom …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个允许用户输入字符串列表的函数.该函数采用长度并允许用户输入长度为1的行.然后检查每一行以确保它与原始行的长度相同.但是,我遇到了一些问题,我找不到解决办法.
问题是我可以输入多于count-1行,并且长度没有像我预期的那样计算..例如,如果我输入["12","13"]然后["121","13" ]给出了错误,虽然长度相同!
read :: IO [Line]
read = do
line <- getLine
let count = length line
lines <- replicateM (count-1) $ do
line <- getLine
if length line /= count
then fail "too long or too short"
else return line
return $ line : lines
Run Code Online (Sandbox Code Playgroud)
Line的类型为String.
readLn给出了解析错误.
我有一个大的data.table看起来像
custid, dayofweek, revenue
AA 2 345
AA 3 545
BB 1 544
BB 4 456
CC 7 231
Run Code Online (Sandbox Code Playgroud)
我想"增长"这个数据表,使得每个custid的所有7个数字都设置为收入列NA.示例如下所示.
custid, dayofweek, revenue
AA 1 NA
AA 2 345
AA 3 545
AA 4 NA
AA 5 NA
AA 6 NA
AA 7 NA
BB 1 544
BB 2 NA
BB 3 NA
BB 4 456
BB 5 NA
BB 6 NA
BB 7 NA
CC 1 NA
CC 2 NA
CC 3 NA
CC 4 NA
CC …Run Code Online (Sandbox Code Playgroud) 我有一个值向量(比如说1:10),并希望在其中重复某些值2次或更多次,由另一个向量(比方说c(3,4,6,8))确定.在此示例中,结果将是c(1,2,3,3,4,4,5,6,6,7,8,8,9,10)重复2次.
这适用于任意长度范围向量(如200:600),第一个包含第二个向量.有没有方便的方法来实现这一目标?
我正在多次replicate运行自己的analyse函数(analyse返回列表):
results <- replicate(reps, analyse())
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以添加进度条,显示当前完成的复制百分比?我已经尝试过了txtProgressBar,但是不知道如何在没有for循环的情况下使它工作。
编辑:的可复制示例 replicate:
analyse <- function() {
out <- list('a' = vector('list', 5), 'b' = vector('list', 5))
}
results <- replicate(3, analyse())
Run Code Online (Sandbox Code Playgroud)
就我而言,输出analyse是带有结果的列表的深层列表。我希望进度栏在每次results填写新列时都更新,因此在每次复制之后。
我有一个数据框,其中我有过去3年(2016年,2017年,2018年)得分的总分,但也有每年得分数的列.
我的数据框看起来像这样:
myDF <- data.frame(ID =c(1,1,1,2,2,3,4),
Dates= c("2016", "2017", "2018", "2016", "2017", "2018", "2016"),
Total_Points = c(5, 5, 5, 4, 4, 2, 3),
Points2016 = c(3, NA, NA, 2, NA, NA, 3),
Points2017 = c(NA,1,NA,NA,2,NA,NA),
Points2018= c(NA,NA,1, NA, NA, 2, NA))
Run Code Online (Sandbox Code Playgroud)
问题是我想为每个组复制"Points2016","Points2017"和"Points2017"列的值,以使它们的条目看起来相同.
我不确定解释是否清楚所以这将是我的预期输出:
myDF_final <- data.frame(ID =c(1,1,1,2,2,3,4),
Dates= c("2016", "2017", "2018", "2016", "2017", "2018", "2016"),
Total_Points = c(5, 5, 5, 4, 4, 2, 3),
Points2016 = c(3, 3, 3, 2, 2, NA, 3),
Points2017 = c(1,1,1,2,2,NA,NA),
Points2018= c(1,1,1, NA, NA, …Run Code Online (Sandbox Code Playgroud) 好的,我理解perl哈希切片和Perl中的"x"运算符,但是有人可以从这里解释下面的代码示例(稍微简化)吗?
sub test{
my %hash;
@hash{@_} = (undef) x @_;
}
Run Code Online (Sandbox Code Playgroud)
示例调用sub:
test('one', 'two', 'three');
Run Code Online (Sandbox Code Playgroud)
这条线是什么引发了我:
@hash{@_} = (undef) x @_;
Run Code Online (Sandbox Code Playgroud)
它正在创建一个哈希,其中键是sub的参数并初始化为undef,因此:
%哈希:
'one'=> undef,'two'=> undef,'three'=> undef
x运算符的rvalue应该是一个数字; 如何将@_解释为子参数数组的长度?我希望你至少要做到这一点:
@hash{@_} = (undef) x scalar @_;
Run Code Online (Sandbox Code Playgroud) 我正在复制数据库行并希望将新行作为对象返回。
$new_foo = Foo::find($id)->replicate()->save();
print_r($new_foo);
Run Code Online (Sandbox Code Playgroud)
这将返回 1 而不是我刚刚创建的新对象。想法?
假设我们有一个 10x20 的实矩阵:
Eigen::MatrixXd A(10,20);
A.setRandom();
Run Code Online (Sandbox Code Playgroud)
我们想构造一个 10x10 的矩阵
B = [v v ... v v]
其中v是长度为 的列向量10。对于这个向量,v,每个元素都是 A 的每一行的平方范数,即:
v = ( ||x_1||^2, ||x_2||^2, ..., ||x_10||^2,)^T,
其中x_j表示 A 的第 j 行。
构造矩阵的最有效方法是B什么?
我可以构造v如下:
Eigen::VectorXd v(10);
for (int i=1; i<10; i++)
{
v(i) = A.row(i).squaredNorm();
}
Run Code Online (Sandbox Code Playgroud)
我认为这一步没有for循环是无法解决的。我怎么能复制这个列 10 次,这样B就如上面所讨论的那样填充了?
我正在尝试使用参数为 1 的指数分布生成 1000 个数字。
将种子值设置为 1 后,我尝试了rexp(1000, 1)和replicate(1000, rexp(1, 1)),但是得到的两个向量的中位数不同。
我预计这两个表达式生成的向量是相同的,因为它们都是从相同种子值下的相同指数分布中采样的。
rexp(1000, 1)和 和有什么区别replicate(1000, rexp(1, 1))?在实践中我应该使用哪个?
这是我尝试过的代码:
> options(digits = 2)
> set.seed(1)
>
> a <- rexp(1000, 1)
> b <- replicate(1000, rexp(1, 1))
>
> median(a)
[1] 0.73
> median(b)
[1] 0.68
Run Code Online (Sandbox Code Playgroud) replicate ×10
r ×6
c++ ×1
copy ×1
data.table ×1
database ×1
double ×1
eigen ×1
eloquent ×1
exp ×1
hash ×1
haskell ×1
io ×1
laravel ×1
object ×1
parse-error ×1
perl ×1
progress-bar ×1
repeat ×1
simulation ×1
slice ×1
statistics ×1
vector ×1