小编grr*_*bla的帖子

如何将管道链(magrittr)的结果提供给对象

这是一个相当简单的问题.但我找不到每个google/stackexchange的答案,并查看magrittr的文档.如何提供通过%>%连接的函数链的结果来创建向量?

我看到大多数人做的是:

a <-
data.frame( x = c(1:3), y = (4:6)) %>%
sum()
Run Code Online (Sandbox Code Playgroud)

但是还有一个解决方案,我可以将结果管道链接到一个对象,也许是别名或类似的东西,有点像这样:

data.frame( x = c(1:3), y = (4:6)) %>%
sum() %>%
a <- ()
Run Code Online (Sandbox Code Playgroud)

这将有助于将所有代码保持在相同的逻辑中,将结果输送到"管道下方".

r magrittr

21
推荐指数
3
解决办法
8539
查看次数

knitr显示整数的数字而没有科学记数法

当显示带有超过四位数的内联代码的数字时

`r 21645`
Run Code Online (Sandbox Code Playgroud)

一个针织的html文件的结果是:( 2.164510^{4}实际上在内联钩子里面有一个计算结果,导致21645).即使我只是想要它打印数字,如下:21645.我可以很容易地解决这个问题,将一个实例包装在里面as.integer或者format或者print,但是如何为整个knitr文件设置一个选项,以便它打印整个整数(我需要的是打印5位数)?手动执行此操作非常烦人.设置options(digits = 7)没有帮助.我猜我必须设置一些chunk-optionor定义一个钩子,但我不知道怎么做

r knitr

15
推荐指数
3
解决办法
7598
查看次数

重新排列data.frame以获得产品的顺序

我有一个以下形式的数据框:

df <- data.frame(client = c("client1", "client1", "client2", "client3", "client3"),
                 product = c("A", "B", "A", "D", "A"),
                 purchase_Date = c("2010-03-22", "2010-02-02", "2009-03-02", "2011-04-05", "2012-11-01"))
df$purchase_Date <- as.Date(df$purchase_Date, format = "%Y-%m-%d")
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

   client product purchase_Date
1 client1       A    2010-03-02
2 client1       B    2010-02-02
3 client2       A    2009-03-02
4 client3       D    2011-04-05
5 client3       A    2012-11-01
Run Code Online (Sandbox Code Playgroud)

我想像这样重新排列:

   client purchase1 purchase2
1 client1         B         A
2 client2         A      <NA>
3 client3         D         A
Run Code Online (Sandbox Code Playgroud)

所以我想知道哪个产品是第一个,第二个,第三个等等,每个人都是按购买日期订购的.我可以使用data.table轻松地分别获取每一个:

library(data.table)
setDT(df)[ , .SD[order(-purchase_Date), product][1], by = client]
Run Code Online (Sandbox Code Playgroud)

对于第一个.但我不知道如何有效地获得所需的输出.

r date

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

删除标准差为零的列

我想从data.frame中删除标准差为零的所有列.

这不起作用:

  df <- df[, ! apply(df , 2 , function(x) sd(x)==0 ) ]
Run Code Online (Sandbox Code Playgroud)

我收到错误:

选择了未定义的列

UPDATE

我选择Filter了我的首选答案,因为它似乎也处理NAs,这是非常有用的.

例如,在

df <- data.frame(v1=c(0,0,NA,0,0), v2=1:5)
Run Code Online (Sandbox Code Playgroud)

Filterapply方法产生错误时,删除列'v1' .

感谢所有其他解决方案,我从他们那里学到了很多东西.

UPDATE2:

应用给出的那些错误可以通过添加na.rm = TRUE到sd的调用来修复,如下所示:

df[, ! apply(df , 2 , function(x) sd(x, na.rm = TRUE)==0 ) ]
Run Code Online (Sandbox Code Playgroud)

r dataframe

4
推荐指数
2
解决办法
4221
查看次数

标签 统计

r ×4

dataframe ×1

date ×1

knitr ×1

magrittr ×1