当我在set.seed(0)和set.seed(1)时在R中发生奇怪的事情;
set.seed(0)
sample(1:100,size=10,replace=TRUE)
#### [1] 90 27 38 58 91 21 90 95 67 63
set.seed(1)
sample(1:100,size=10,replace=TRUE)
#### [1] 27 38 58 91 21 90 95 67 63 7
Run Code Online (Sandbox Code Playgroud)
当将种子从0更改为1时,我得到完全相同的序列,但移过1个单元格!
请注意,如果我执行set.seed(2),我会得到一个看起来完全不同(随机?)的向量.
set.seed(2)
sample(1:100,size=10,replace=TRUE)
#### [1] 19 71 58 17 95 95 13 84 47 55
Run Code Online (Sandbox Code Playgroud)
谁知道这里发生了什么?
有没有办法在你的命名空间中定义一个R中的变量,这样它就不会被覆盖(也许是一个"最终"声明)?类似下面的psuedocode:
> xvar <- 10
> xvar
[1] 10
xvar <- 6
> "Error, cannot overwrite this variable unless you remove its finality attribute"
Run Code Online (Sandbox Code Playgroud)
动机:多次运行R脚本时,有时很容易无意中覆盖变量.
什么是从熊猫数据框中选择所有行的最简单方法,谁的sym在整个表中恰好出现两次?例如,在下表中,我想在['b','e']中选择带有sym的所有行,因为这些符号的value_counts等于2.
df=pd.DataFrame({'sym':['a', 'b', 'b', 'c', 'd','d','d','e','e'],'price':np.random.randn(9)})
price sym
0 -0.0129 a
1 -1.2940 b
2 1.8423 b
3 -0.7160 c
4 -2.3216 d
5 -0.0120 d
6 -0.5914 d
7 0.6280 e
8 0.5361 e
df.sym.value_counts()
Out[237]:
d 3
e 2
b 2
c 1
a 1
Run Code Online (Sandbox Code Playgroud) 任何想法如何在KDB中做得很好?
考虑一下表格
X:([]a:1 2 3;b:`abc11`abc22`abc33;c:10 20 30)
Run Code Online (Sandbox Code Playgroud)
我现在想要一个新的表Y,它在第二列的符号中删除了"abc",这样:
Y:([]a:1 2 3;b:`11`22`33;c:10 20 30)
Run Code Online (Sandbox Code Playgroud) 考虑一个熊猫df,其列包含等长的元组。
L1 = [['ID1', ('key1a','key1b','key1c'), ('value1a','value1b','value1c')],
['ID2', ('key2a','key2b','key2c'), ('value2a','value2b','value2c')]]
df1 = pd.DataFrame(L1,columns=['ID','Key','Value'])
>>> df1
ID Key Value
0 ID1 (key1a, key1b, key1c) (value1a, value1b, value1c)
1 ID2 (key2a, key2b, key2c) (value2a, value2b, value2c)
Run Code Online (Sandbox Code Playgroud)
如下垂直展开的最简单方法是什么?
ID Key Value
0 ID1 key1a value1a
1 ID1 key1b value1b
2 ID1 key1c value1c
3 ID2 key2a value2a
4 ID2 key2b value2b
5 ID2 key2c value2c
6 ID3 key3a value3a
7 ID3 key3b value3b
8 ID3 key3c value3c
Run Code Online (Sandbox Code Playgroud) 在R中,我想做类似这样的事情:我有一个函数f1,它有一个带默认值的参数; K = 3.
f1 = function(x,k=3){
u=x^2+k
u
}
Run Code Online (Sandbox Code Playgroud)
然后我定义了第二个函数f2,它调用f1.
f2 = function(z,s){
s*f1(z)
}
Run Code Online (Sandbox Code Playgroud)
允许f2用户覆盖内部函数f1中默认值k的最简洁方法是什么?一个简单的解决方案是将f2重新定义为:
f2 = function(z,s,K){
s*f1(z,K)
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我处理大量的功能,我觉得这可能很麻烦.有什么建议?谢谢.
在不进行显式循环的情况下创建前n个整数的Java数组的任何快捷方式?在R中,它会
intArray = c(1:n)
Run Code Online (Sandbox Code Playgroud)
(并且得到的矢量将是1,2,...,n).
我有一个带有列的表T Sym:`IBM`MSFT`GOOG... 想要最简单的方法来创建newColumn形式的新列:"IBM_Buy","MSFT_Buy","GOOG_Buy",...
以下似乎没有做到这一点:
select ((string Sym),"_Buy") from T
这应该很容易,但是在google或SO上找不到任何直接的答案。
想象一下,在RI中运行一个函数FOuter(),并在其体内执行一些循环并调用另一个函数FInner()。是否有一种简单的方法来计数/记录FInner被调用的次数?我正在尝试估计如果进行优化可以节省多少时间FInner。
非常愚蠢的问题......考虑下面按 sym 排序的表 t1。
t1:([]sym:(3#`A),(2#`B),(4#`C);val:10 40 12 50 58 75 22 103 108)
sym val
A 10
A 40
A 12
B 50
B 58
C 75
C 22
C 103
C 108
Run Code Online (Sandbox Code Playgroud)
我想选择与每个符号对应的第一行,如下所示:
(`sym`val)!(`A`B`C;10j, 50j, 75j)
sym val
A 10
B 50
C 75
Run Code Online (Sandbox Code Playgroud)
必须有一个单线来做到这一点。要获取每个符号的最后一行,就像select by sym from t1. 任何提示?