小编Zha*_*g18的帖子

访问变量值,其中变量名称存储在字符串中

对其他语言提出了类似的问题:C,sql,java等.

但是我想在R中这样做.

我有:

ret_series <- c(1, 2, 3)
x <- "ret_series"
Run Code Online (Sandbox Code Playgroud)

如何(1, 2, 3)x不直接提及的情况下调用某些函数/操作ret_series

variables r r-faq

53
推荐指数
3
解决办法
5万
查看次数

R中的元素均值

在R中,我有两个向量:

a <- c(1, 2, 3, 4)
b <- c(NA, 6, 7, 8)
Run Code Online (Sandbox Code Playgroud)

如何找到两个向量的元素均值,删除NA,没有循环?即我想得到的矢量

(1, 4, 5, 6)
Run Code Online (Sandbox Code Playgroud)

我知道这个功能mean(),我知道这个论点na.rm = 1.但我不知道如何把事情放在一起.可以肯定的是,实际上我有数千个带有NA的向量出现在不同的地方,因此任何依赖于维度的解决方案都不起作用.谢谢.

r mean

28
推荐指数
1
解决办法
2万
查看次数

python相当于perl的qw()

我在Perl中做了很多这样的事情:

printf "%8s %8s %8s\n", qw(date price ret);
Run Code Online (Sandbox Code Playgroud)

但是,我能用Python得到的最好的是

print '%8s %8s %8s' % (tuple("date price ret".split()))
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有一种更优雅的方式呢?如果你告诉我那就好了,我就没事了.

python quotes perl

26
推荐指数
2
解决办法
9265
查看次数

真数立方根的负数

我试图看看是否有一个函数来直接获得负数的真正立方根.例如,在Java中,有Math.cbrt()功能.我正在寻找R中的等价物.

否则,我目前的黑客是:

x <- -8
sign(x) * abs(x)^(1/3)
Run Code Online (Sandbox Code Playgroud)

每次打字都非常不优雅和麻烦.谢谢!

r

17
推荐指数
1
解决办法
1万
查看次数

如何检查变量是python列表,numpy数组还是pandas系列

我有一个函数,它接受一个变量,如果它是以下三种类型中的任何一种,它将起作用

 1. pandas Series
 2. numpy array (ndarray)
 3. python list
Run Code Online (Sandbox Code Playgroud)

任何其他类型都应该被拒绝.检查这个的最有效方法是什么?

python arrays numpy list pandas

16
推荐指数
3
解决办法
2万
查看次数

从Python调用Perl模块

我的问题与问题相反.特别是,我有几十个用Perl编写的现有模块,一些是面向对象的,另一些只是导出一组函数.既然我必须在python中编写某些脚本但仍想调用那些Perl模块,我想知道

1)如果可以实现,并且

2)如果是这样,最好的方法是什么

理想情况下,Perl模块对Python来说可能是"黑盒子",可以这么说.就像是:

 from perl_module import *
 return_value = perl_func(arg1, arg2, ...)
Run Code Online (Sandbox Code Playgroud)

 object = perl_module.new()
 object.method1(arg1, arg2, ...)
Run Code Online (Sandbox Code Playgroud)

但我肯定会实现这个,如果可能的话,需要在后台导入/运行其他东西.任何Inline::Python与之相对应的东西也会很好(但并不理想).谢谢!

python perl module call

12
推荐指数
1
解决办法
7914
查看次数

Pandas element-wise min max对着沿一个轴的系列

我有一个Dataframe:

df = 
             A    B    C    D
DATA_DATE
20170103   5.0  3.0  NaN  NaN
20170104   NaN  NaN  NaN  1.0
20170105   1.0  NaN  2.0  3.0
Run Code Online (Sandbox Code Playgroud)

我有一个系列

s = 
DATA_DATE
20170103    4.0
20170104    0.0
20170105    2.2
Run Code Online (Sandbox Code Playgroud)

我想运行一个逐元素的max()函数并s沿着列的对齐df.换句话说,我想得到

result = 
             A    B    C    D
DATA_DATE
20170103   5.0  4.0  NaN  NaN
20170104   NaN  NaN  NaN  1.0
20170105   2.2  NaN  2.2  3.0
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?我检查了单列比较系列到系列的比较,但没有找到一种有效的方法来对一系列运行数据帧.

奖励:不知道答案是不言而喻的上面,但如何做到这一点,如果我要对齐s沿df(假设尺寸匹配)?

max min dataframe pandas elementwise-operations

11
推荐指数
2
解决办法
2842
查看次数

如何进行高级Python哈希自动修复?

这个问题是关于在Python中实现完整的Perl自动修改.我知道之前提出过类似的问题,到目前为止,最好的答案是" 在Python中实现嵌套字典的最佳方法什么? ".但是,我希望这样做:

a['x']['y'].append('z')
Run Code Online (Sandbox Code Playgroud)

没有a['x']['y'] = []首先声明,或者更确切地说,没有声明a['x'] = {}.(在Perl中你可以注意到push @{$a->{x}{y}}, 'z';.)

我知道dictlist类sorta不混合,所以这很难,但我有兴趣看看是否有人有一个巧妙的解决方案,可能涉及从中创建一个继承的类,dictappend在其上定义了一个新的方法?

我也知道这可能会让一些Python纯粹主义者想要我坚持使用Perl.但是,即使只是为了挑战,我也希望看到一些东西.

python autovivification data-structures

10
推荐指数
1
解决办法
4257
查看次数

pandas 在值少于分位数的系列上使用 qcut

我有数千个系列(DataFrame 的行)需要应用 qcut。定期会有一个系列(行)的值少于所需分位数(例如,1 个值与 2 个分位数):

>>> s = pd.Series([5, np.nan, np.nan])
Run Code Online (Sandbox Code Playgroud)

当我应用.quantile()它时,它可以毫无问题地分成两个分位数(具有相同的边界值)

>>> s.quantile([0.5, 1])
0.5    5.0
1.0    5.0
dtype: float64
Run Code Online (Sandbox Code Playgroud)

但是,当我应用.qcut()整数值作为分位数时,会引发错误:

>>> pd.qcut(s, 2)
...
ValueError: Bin edges must be unique: array([ 5.,  5.,  5.]).
You can drop duplicate edges by setting the 'duplicates' kwarg
Run Code Online (Sandbox Code Playgroud)

即使我设置了duplicates参数,它仍然失败:

>>> pd.qcut(s, 2, duplicates='drop')
....
IndexError: index 0 is out of bounds for axis 0 with size 0
Run Code Online (Sandbox Code Playgroud)

我该如何进行这项工作?(同样,pd.qcut(s, [0, 0.5, 1], duplicates='drop')也不起作用。)

所需的输出是将分配 …

quantile pandas

8
推荐指数
1
解决办法
3万
查看次数

Java对象创建语法效率?

这可能听起来很基本.但我是Java的新手.到目前为止,我已经投入了很少的初始学习时间,我一直对新对象声明的语法冗余感到困惑:

TypeName a = new TypeName();
Run Code Online (Sandbox Code Playgroud)

特别是,

String s = new String("abc");
Character c = new Character("A");
Run Code Online (Sandbox Code Playgroud)

世界上为什么会有人想要输入关键字TypeName(例如String,Character等...)的两倍?我知道有简短的手:

String s = "abc";
char c = "A";
Run Code Online (Sandbox Code Playgroud)

但这些是例外而不是规则.那么有人可以开导我吗?谢谢.

java syntax

7
推荐指数
4
解决办法
1587
查看次数