小编bgo*_*dst的帖子

如何从data.frame中选择行和列的子集

我有这个

d[d$Age > "2", ]
Run Code Online (Sandbox Code Playgroud)

并且它返回Age年龄超过2的所有行,但我想只返回几个列中的值,比如d $ X和d $ Y,而不是全部.

无论如何我能做到这一点?

谢谢

r

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

比较R中的数据帧

我是R和stackoverflow的新手; 对我的问题提出道歉.

我有两个数据帧

data.frame 1:

Product.ID Description Wholesale.Price
Prod1      Desc1       1.45
Prod       Desc2       1.27
Prod3      Desc        3.62
Prod4      Desc4       2.15
Prod5      Desc5       2.87
Prod12     Desc6       2.53
Prod7      Desc7       2.20
Prod8      Desc8       2.60
Prod9      Desc9       3.68
Run Code Online (Sandbox Code Playgroud)

data.frame 2:

Product.ID Description Wholesale.Price
Prod1      Desc1       1.45
Prod2      Desc2       1.27
Prod3      Desc3       3.62
Prod4      Desc4       1.57
Prod5      Desc5       2.87
Prod6      Desc6       2.53
Prod7      Desc7       2.20
Prod8      Desc8       3.21
Prod9      Desc9       1.81
Run Code Online (Sandbox Code Playgroud)

我看到我可以使用merge(list_1,list_2)来打印两个数据帧的所有3列匹配的位置(非常酷).

我试图找到一种方法来打印出基于Product.ID的两个数据框之间的Description和Wholesale.price之间存在差异的地方.我甚至不确定如何以有意义的方式可视化差异.

非常感谢任何帮助.

compare r

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

使用-n或-p选项时是否可以将命令行参数传递给@ARGV?

我认为我的问题的标题基本上涵盖了它.这是一个人为的例子,试图过滤与参数化字符串完全相等的输入行,基本上是Perlish fgrep -x:

perl -ne 'chomp; print if $_ eq $ARGV[0];' bb <<<$'aa\nbb\ncc';
## Can't open bb: No such file or directory.
Run Code Online (Sandbox Code Playgroud)

问题当然是该-n选项会while (<>) { ... }在代码周围创建一个隐式循环,而菱形运算符会占用文件名的所有命令行参数.所以,虽然在技术上的bb说法得到@ARGV,因为该参数是在整个计划失败由钻石操作回升.最终结果是,在使用时不可能将命令行参数传递给Perl程序-n.

我想我真正想要的是一个可以while (<STDIN>) { ... }在代码周围创建隐式循环的选项,因此不会对文件名采用命令行参数,但这样的事情不存在.

我可以想到三种可能的解决方法:

1: BEGIN { ... }阻止复制和清除@ARGV.

perl -ne 'BEGIN { our @x = shift(@ARGV); } chomp; print if $_ eq $x[0];' bb <<<$'aa\nbb\ncc';
## bb
Run Code Online (Sandbox Code Playgroud)

2:手动编码单行中的while循环.

perl …
Run Code Online (Sandbox Code Playgroud)

perl command-line-interface command-line-arguments

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

为什么重复继承/重复继承无效?

此代码无效:

struct Agent {};
struct DoubleAgent : public Agent, public Agent {};
Run Code Online (Sandbox Code Playgroud)

因为:

> g++ -c DoubleAgent.cpp
DoubleAgent.cpp:2:43: error: duplicate base type ‘Agent’ invalid
 struct DoubleAgent : public Agent, public Agent {};
                                           ^
Run Code Online (Sandbox Code Playgroud)

为什么?

我不认为这违反了继承的概念。如果一个类可以与基类具有is-a关系,那么它不应该与一个基类具有is-two-of-a关系吗?特别要考虑到这一点,因为C ++支持多种继承,所以一个类已经可以是多种不同的基本类型。

此外,所谓的菱形问题已经间接支持了这种情况,在该问题中,多个(不同的)基类可以从一个公共基类继承。

我在Wikipedia上找到了几句话,似乎暗示这是OO语言中的常见但非普遍性约束,可能仅是由于担心语法复杂性,并且是不受欢迎的约束:


Wikipedia:继承(面向对象编程)#Design约束

设计约束

在设计程序时广泛使用继承会施加某些约束。

例如,考虑一个Person类,其中包含一个人的姓名,出生日期,地址和电话号码。我们可以定义一个名为Student的Person子类,其中包含该人的平均成绩和所采取的课程,以及另一个名为Employee的Person子类,其中包含该人的职称,雇主和薪水。

在定义此继承层次结构时,我们已经定义了某些限制,但并非所有限制都可取:

  • 单一性:使用单一继承,子类只能从一个超类继承。继续上面给出的示例,“人”可以是“学生”或“雇员”,但不能同时是两者。使用多重继承部分地解决了这个问题,因为然后可以定义一个从Student和Employee继承的StudentEmployee类。但是,在大多数实现中,它仍然只能从每个超类继承一次,因此,不支持学生有两个工作或在两个机构就读的情况。通过支持重复继承,Eiffel中可用的继承模型使之成为可能。

维基百科:多重继承#缓解

C ++不支持显式的重复继承,因为没有办法限定要使用的超类(即,一个类在单个派生列表中出现多次(类Dog:公共动物,动物))。


我不同意该声明“ ...,因为没有办法限定要使用的超类”。编译器是否不能只允许对基本限定符进行某种索引,例如Animal[1]::method()(并且同样,也许允许将类定义中的重复折叠为struct DoubleAgent : public Agent[2] {};)?我认为没有任何问题,从语法和概念上来说这不是一个简单的解决方案吗?

我相信我已经找到了两种可能的解决方法,尽管我无法确定它们是否会在实际系统中正常工作,或者它们是否会导致无法解决的问题:

1:在基类上消除模板非类型参数的歧义。

template<int N> struct Agent {};
struct DoubleAgent : public …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance multiple-inheritance language-lawyer

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

试图在R中为向量创建ID

我在R中有这个向量

A 
B
C
A
B
C
D
E
A
B
C
A
B
D
F
G
Run Code Online (Sandbox Code Playgroud)

我想得到以下结果:

A 1
B 1
C 1
A 2
B 2
C 2
D 2
E 2
A 2
B 2
C 2
A 3
B 3
D 3
F 3
G 3
Run Code Online (Sandbox Code Playgroud)

所以,换句话说,我正在尝试使用新的"A"案例来启动ID.显然,它只是数据的一部分,而且我的向量要长得多.有人能帮忙吗?谢谢

r

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

如何从列表中删除元素?

尽管标题看起来很简单,但我还没有在StackOverflow上找到答案.我的问题是:我有一些元素的列表.列表中的每个元素还包含一个填充了一些字符串的列表.列表内的列表包含空('')的值,而不是null.我想删除该列表中空的行.怎么办呢?我猜lapply会做的伎俩,但我不知道如何在那里使用它.

将不胜感激!非常感谢!

编辑:所以我的输出看起来像这样

$'1'
1 text1
2 text2
3
4 text3
5 text4

$'2'
1 text1
2
3 text2
4
5 text3
Run Code Online (Sandbox Code Playgroud)

我的目标是删除那些空的行,使它看起来像这样:

$'1'
1 text1
2 text2
3 text3
4 text4

$'2'
1 text1
2 text2
3 text3
Run Code Online (Sandbox Code Playgroud)

r

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

从R中的数据框中删除重复的行

我有两列,只想保留非交换行.对于下面的数据,我的输出应该包含一个(1 2)的组合.即我的查询(1 2)与(2 1)相同.有没有一种简单的方法在R中做到这一点.已经尝试过调换.并保留上部的traingular矩阵.但转移数据变得很痛苦.

A B prob
1 2 0.1
1 3 0.2
1 4 0.3
2 1 0.3
2 3 0.1
2 4 0.4
Run Code Online (Sandbox Code Playgroud)

我的最终输出应该是:

A B prob
1 2 0.1
1 3 0.2
1 4 0.3
2 3 0.1
2 4 0.4
Run Code Online (Sandbox Code Playgroud)

transpose r matrix reshape reshape2

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

你能获得调用函数的属性名吗?

我已经做了很多搜索和一些游戏,我很确定这个问题的答案是否定的,但我希望JavaScript专家可能有一个技巧可以做到这一点.

JavaScript函数可以由多个属性引用,即使在完全不同的对象上也是如此,因此不存在包含该函数对象或属性.但是,无论何时实际调用函数,都必须通过单个对象(至少window是全局函数调用的对象)和该对象的属性来完成.

(函数也可以通过函数局部变量调用,但是我们可以将函数局部变量视为作用域的激活对象的属性,因此该情况​​不是此规则的例外.)

我的问题是,有没有办法从函数体内部获取用于调用函数的属性名称?我不想将属性名称作为参数传递,或者在封闭范围内的变量周围传递,或者将名称存储为保存函数引用的对象的单独属性,并使函数访问该属性的属性的this对象.

这是我想要做的一个例子:

var callName1 = function() { var callName = /* some magic */; alert(callName); };
var obj1 = {'callName2':callName1, 'callName3':callName1 };
var obj2 = {'callName4':callName1, 'callName5':callName1 };

callName1(); // should alert 'callName1'
obj1.callName2(); // should alert 'callName2'
obj1.callName3(); // should alert 'callName3'
obj2.callName4(); // should alert 'callName4'
obj2.callName5(); // should alert 'callName5'
Run Code Online (Sandbox Code Playgroud)

从我的搜索,它看起来就像你可以得到的最接近的arguments.callee.name,但是这不起作用,因为它只返回在定义时固定到函数对象的名称,并且只有当它被定义为命名函数(我的例子中的函数不是).

我还考虑过,也许你可以遍历this对象的所有属性并测试相等性,arguments.callee以找到其值是对函数本身的引用的属性,但这也不起作用(在一般情况下),因为可能是对象自己(或继承)属性集中的函数的多个引用,如我的示例中所示.(而且,这似乎是一种效率低下的解决方案.) …

javascript properties

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

R中的IF / THEN / ELSE

大家。

希望这是一个简单的语法问题。我正在尝试在R的表中创建一个新变量,如果我的患者处于我正在查看的年龄范围内,它将显示为“ 1”,否则为“ 0”。我感兴趣的年龄范围是2-155。该代码正在运行,没有任何错误,但无法正常工作。当我查看表格时,即使age4为158,新变量也会显示1。

table$newvar <- if (table$age4>=2 && table$age4 <=155) {table$newvar=1} else {table$newvar=0}
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!提前致谢!

syntax if-statement r

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

当auto和decltype()不能使用时,如何避免重复封闭类类型

我最近发现了C++ 11的优点autodecltype()特性,它们非常出色,因为它们可以消除大量的冗余类型代码.但是,有些情况下它们无法使用.我主要询问的一个例子是,如果你想要声明一个类型使用封闭类类型的变量,可以是直接的,也可以是模板参数,并且你没有初始化表达式(允许你使用它)auto).如果封闭类类型是具有许多模板参数的模板类,则这尤其不合需要.例如:

template<typename T1, typename T2, typename T3, typename T4, typename T5 > struct S {
    std::map<int,S<T1,T2,T3,T4,T5>*> m1;
    std::map<int,S<T1,T2,T3,T4,T5>*> m2;
    std::map<int,S<T1,T2,T3,T4,T5>*> m3;
    std::map<int,S<T1,T2,T3,T4,T5>*> m4;
    std::map<int,S<T1,T2,T3,T4,T5>*> m5;
};
Run Code Online (Sandbox Code Playgroud)

逻辑解决方案是使用typedef:

template<typename T1, typename T2, typename T3, typename T4, typename T5 > struct S {
    typedef S<T1,T2,T3,T4,T5> ThisClass;
    std::map<int,ThisClass*> m1;
    std::map<int,ThisClass*> m2;
    std::map<int,ThisClass*> m3;
    std::map<int,ThisClass*> m4;
    std::map<int,ThisClass*> m5;
};
Run Code Online (Sandbox Code Playgroud)

但是仍然不希望声明一个只重复封闭类类型的typedef.

如果您在实例方法中,通过推导类型,实际上可以解决这个问题*this,尽管必要的代码比我想要的更详细:

auto copy(void) {
    typename std::remove_reference<decltype(*this)>::type s = *this;
    // ... do stuff with s …
Run Code Online (Sandbox Code Playgroud)

c++ generic-programming

0
推荐指数
1
解决办法
129
查看次数

如果是其他问题; 无法将类别分配给R中的整数类别

数据

我想使用我在下面的代码中包含的逻辑在类别列中获取类别名称.但是,它会中断并产生错误.评级变量是整数.

if (nps$Rating <= 6) {
    nps$npsCAT <- "Detractor"
} else if (nps$Rating > 6 & nps$Rating < 9) {
    nps$npsCAT <- "Passive"
} else {
    nps$npsCAT <- "Promoter"
}
Run Code Online (Sandbox Code Playgroud)

警告消息:在if(nps $ Rating <= 6){:条件长度> 1且仅使用第一个元素

if-statement r

0
推荐指数
1
解决办法
106
查看次数

关于Vi和Vim编辑

vi和vim编辑器有什么区别?我希望技术观点不同,不是戏剧性的.如果您举例,那么它对我或所有读者都很有帮助.

unix vi vim text-editor

-1
推荐指数
1
解决办法
131
查看次数