小编edd*_*ddi的帖子

创建data.table :: ITime向量

我很惊讶这样做,使用data.table包:

a = as.ITime('12:01:00')
str(a)
Class 'ITime'  int 4326
a = as.ITime(c('12:01:00','12:00:02'))
Message d'avis :
In if (!is.na(y)) return(as.ITime(y)) :
  la condition a une longueur > 1 et seul le premier élément est utilisé
str(a)
Class 'ITime'  int [1:2] 43260 43202
Run Code Online (Sandbox Code Playgroud)

为什么这条线会发出警告?

r data.table

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

删除第一个重复行并保留其余行?

我想删除基于"用户"列的重复项,但只删除它出现的第一个实例.

DF:

User  No
A     1
B     1
A     2
A     3
A     4
C     1
B     2
D     1
Run Code Online (Sandbox Code Playgroud)

结果:(A1和B1删除)

User  No  
A     2
A     3
A     4
C     1
B     2
D     1
Run Code Online (Sandbox Code Playgroud)

我使用复制功能一直没有成功.

任何帮助,将不胜感激!谢谢!

r

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

初始化程序列表构造函数错误与CRTP

我正在用C++ 11弄湿我的脚,我真的很困惑为什么这不起作用:

template <class T>
struct A {
  size_t size() const { return sizeof(T); }
};

struct B : A<B> {
  int x;
  int y;
};

B var {1, 5};
Run Code Online (Sandbox Code Playgroud)

我正在使用gcc 4.8.2并收到错误说:

no matching function for call to 'B(<brace-enclosed initializer list>)'
Run Code Online (Sandbox Code Playgroud)

当我不从中派生时A,它的工作原理很好,推导也会以某种方式改变我的结构的POD-ness B

c++ crtp initializer-list c++11

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

R vs sed正则表达式贪婪

我不太明白为什么这不会产生,"test"并希望得到一个解释:

a = "blah test"
sub('^.*(test|$)', '\\1', a)
# [1] ""
Run Code Online (Sandbox Code Playgroud)

将其与sed表达式进行比较:

echo 'blah test' | sed -r 's/^.*(test|$)/\1/'
# test
echo 'blah blah' | sed -r 's/^.*(test|$)/\1/'
#
Run Code Online (Sandbox Code Playgroud)

Fwiw,以下实现了我想要的R(并且相当于上述sed结果):

sub('^.*(test)|^.*', '\\1', a)
Run Code Online (Sandbox Code Playgroud)

regex r sed

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

与hash_combine发生太多碰撞

我正在使用boost::unordered_map一个自定义结构,该结构或多或少是整数向量,并具有一个自定义散列函数,如下所示:

std::size_t seed = 0;

for (int i = 0; i < myvec.size(); ++i)
  boost::hash_combine(seed, myvec[i]);

return seed;
Run Code Online (Sandbox Code Playgroud)

myvec的大小为3时,我用1M元素1:100 x 1:100 x 1:100(所以的每个元素myvec都是1到100的整数)填充哈希,我得到了约330,000次碰撞。

发生这么多碰撞是正常的,我该怎么做才能避免这种情况?

c++ algorithm hash boost

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

打印一个大表到控制台

我有data.table超过 10k 行,我想完全打印到控制台。尽管您收到错误消息 - 增加options(max.print=...)无济于事 - 表仍然被切断(取决于max.print设置为 15000 的操作系统,它在 1500 或 7500 对我来说被切断)。

我考虑过使用write.table,但问题是我失去了print通常提供的列对齐:

dt = data.table(a = c("sdflk", "sdflksdfsdfsdf"), b = c(1,2))
write.table(dt, sep = "\t", quote = F)
#a       b
#1       sdflk   1
#2       sdflksdfsdfsdf  2
Run Code Online (Sandbox Code Playgroud)

有没有办法绕过这个限制?

data.table如果你想玩,这里有一个大的:

dtl = data.table(a = sample(c("sdflk", "sdflksdfsdfsdf"), 15000, T), b = 1:15000)
options(max.print = 15000)
print(as.data.frame(dtl))
print(dtl, nrow = 15000)
Run Code Online (Sandbox Code Playgroud)

r dataframe data.table

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

R:strptime()和is.na()出乎意料的结果

我有一个大约有800万行和3列的数据框.我用strptime()以下方式:

df$date.time <- strptime(df$date.time, "%m/%d/%y %I:%M:%S %p")
Run Code Online (Sandbox Code Playgroud)

这适用于所有行,但我检查使用的1104行

df[is.na(df$date.time), ]
Run Code Online (Sandbox Code Playgroud)

当我查看这些"问题"数据时,date.time条目似乎按照我期望的方式进行格式化.例如,这是一个出现问题的观察结果,但似乎不是NA:

id                date.time              outcome
observation543490 2012-03-11 02:14:01    C
Run Code Online (Sandbox Code Playgroud)

在这里可能会发生什么,is.na(df$date.time)为显然已正确转换的行返回TRUE值?

这是一个可重复的例子(如果你在CST):

is.na(strptime("03/11/12 2:14:01 AM", "%m/%d/%y %I:%M:%S %p", "CST6CDT"))
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)

datetime r strptime

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

从矩阵中提取最大的独立列集

我有一个看起来像这样的矩阵:

 1 1 1 1 1 1 1 1 1  1  1  1
 1 1 1 1 1 1 0 0 0  0  0  0
 0 0 1 1 0 0 0 0 1  1  0  0
 1 1 0 0 0 0 1 1 0  0  0  0
 0 0 1 1 0 0 0 0 0  0  0  0
 1 1 0 0 0 0 0 0 0  0  0  0
Run Code Online (Sandbox Code Playgroud)

您可以看到每两列是相同的,表示设计矩阵的"组成员资格".现在我的问题是,如何在R中自动将这个等级缺陷矩阵(rank = 6)转换为满秩矩阵?这种情况可能有点特殊,即我可以手动删除重复的列.我只是好奇是否有一种方法能够"更普遍地"解决问题.谢谢!

r matrix

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

最后一次观察由小组在多个栏目上进行

我有一个数据集,随着时间的推移观察多个患者及其诊断.有9个不同的虚拟变量,每个都代表一个特定的诊断,命名为例如L40,L41,K50,M05等.

如果虚拟变量中存在缺失值,我希望患者继续使用最后一个非缺失值,这样一旦患者接受诊断,它将继续进行后续观察.

我开始使用动物园包中的na.locf函数.

diagdata <- originaldata[,grep("^patient|^ar|^edatum|^K|^L|^M",colnames(originaldata))]

require(zoo)
require(data.table)

diagnosis <- data.table(diagdata)

diagnosis[,L40:=na.locf(L40),by=patient]
Run Code Online (Sandbox Code Playgroud)

这实现了我所期待的,但仅限于所讨论的列(L40).有没有办法将上述内容应用于所有相关的诊断栏,即以K,L和M开头的列?

r data.table locf

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

如何将data.frames分别保存在列表中?

这是我的问题。如果您能提供帮助,我们将不胜感激。我有一个包含多个长度不同但结构相同的 data.frame 的列表。现在我想分别保存列表中的data.frames。注意:不要使用 do.call(rbind,...) 将它们合并到一个 data.frame 中。另外我想命名数组中的每个 data.frame 。

a=c(1,2,3,4,5,6)

b=c(4,5,6,5,5,5)

c=c(3,4,5,6,7,8)

A=data.frame(a=a,b=b,c=c)

B=data.frame(a=c,b=b,c=a)

C=data.frame(a=b,b=c,c=a)

l <- list(A, B, C)

names.list <- c("NewYear_Data", "Thanks_giving", "Christmas")
Run Code Online (Sandbox Code Playgroud)

现在我想使用名称中的名称将 ABC 保存在列表中。列表

具体来说,这里我有一个列表l,其中有几个data.frames。现在我想使用names.list中的名称保存列表中的每个data.frames。

我尝试取消列出、获取并申请...

如果有人可以使用 plyr、reshape 或 data.table 方法解决这个问题,那就太好了。

多谢!

r list dataframe

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

标签 统计

r ×8

data.table ×3

c++ ×2

dataframe ×2

algorithm ×1

boost ×1

c++11 ×1

crtp ×1

datetime ×1

hash ×1

initializer-list ×1

list ×1

locf ×1

matrix ×1

regex ×1

sed ×1

strptime ×1