小编mat*_*t_k的帖子

从data.table中删除多个列

从data.table中删除多个列的正确方法是什么?我目前正在使用下面的代码,但是当我不小心重复其中一个列名时,却出现了意外行为.我不确定这是不是一个bug,或者我不应该这样删除列.

library(data.table)
DT <- data.table(x = letters, y = letters, z = letters)
DT[ ,c("x","y") := NULL]
names(DT)
[1] "z"
Run Code Online (Sandbox Code Playgroud)

以上工作正常,但是

DT <- data.table(x = letters, y = letters, z = letters)
DT[ ,c("x","x") := NULL]
names(DT)
[1] "z"
Run Code Online (Sandbox Code Playgroud)

r data.table

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

从bash脚本调用conda source activate

我正试图通过bash脚本激活我的conda env.即使脚本运行正常并且我的PATH似乎在脚本中被更改,它也会在脚本终止后以某种方式重置.我可以source activate test从cmd线调用,它工作正常.下面的输出示例.

脚本:

PycharmProjects/test » cat ./example.sh echo "before calling source: $PATH" source activate test echo "after calling source: $PATH"

输出:

./example.sh
before calling source: /Use rs/me/miniconda3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin

discarding /Users/me/miniconda3/bin from PATH
prepending /Users/me/miniconda3/envs/test/bin to PATH

after calling source: /Users/me/miniconda3/envs/test/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin`
Run Code Online (Sandbox Code Playgroud)

但如果我echo $PATH在脚本完成后,你可以看到它$PATH没有改变(即没有/Users/me/miniconda3/envs/test/bin):

PycharmProjects/test » echo $PATH /Users/me/miniconda3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin

macos shell virtualenv conda

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

将用户添加到组但在运行"id"时不反映

R创建一个名为staff的组,我希望能够在不启动R作为sudo的情况下更新包.所以我把自己添加到工作人员使用:

sudo usermod -G adm,dialout,cdrom,plugdev,lpadmin,admin,sambashare,staff matt
Run Code Online (Sandbox Code Playgroud)

(附带问题是否有一种方法可以将自己添加到一个组而不列出您所属的其他组?)

如果我检查/ etc/groups我看到了

staff:x:50:matt
Run Code Online (Sandbox Code Playgroud)

和/ etc/shadow一样

staff:*::matt
Run Code Online (Sandbox Code Playgroud)

但是,如果我经营团体或身份证,我不是员工.另外,我无法对/ usr/local/lib/R中的任何内容进行更改.

unix linux

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

从数据框中删除多个元素的标准方法

从数据框中删除多个元素的最佳方法是什么?在我的情况下,我在数据框架中拥有该月的所有日期,并且想要删除几天.像下面这样的东西可以运行一天.

m[m$date!="01/31/11",]
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试类似的东西

m[m$date!=c("01/31/11","01/30/11"),]
Run Code Online (Sandbox Code Playgroud)

我收到一条警告信息

Warning message:
In `!=.default`(m$date, c("01/31/11", "01/30/11")) :
longer object length is not a multiple of shorter object length
Calls: [ ... [.data.frame -> Ops.dates -> NextMethod -> Ops.times -> NextMethod
Run Code Online (Sandbox Code Playgroud)

它似乎工作了两天,但如果我将01/29/11添加到矢量它显示所有日子,但是01/31/11.

r

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

Linux下R包安装位置的逻辑

各种R封装的不同安装位置背后的逻辑是什么?我似乎在我的linux机器上的几个不同位置安装了软件包.这是典型行为,如果是这样,在/ usr/lib/R/library vs/usr/lib/R/site-library中安装软件包的合理性是什么?我并不关心软件包的安装位置,但是将安装分布在我的系统的不同位置似乎有点愚蠢.

Renviron有下面的评论,这似乎表明/ usr/lib/R/site-library是针对Debian打包的软件包,但并没有真正解释其他两个目录的用途.另外,通过在列表中设置/ usr/lib/R/library不会使它不是install.packages()的默认目录吗?

# edd Apr 2003  Allow local install in /usr/local, also add a directory for
#               Debian packaged CRAN packages, and finally the default dir 


> .libPaths()
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"      
[3] "/usr/lib/R/library"     
Run Code Online (Sandbox Code Playgroud)

linux r

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

如何为R中的is.holiday()chron包定义假期

我正在尝试使用它chronis.holiday()功能,但我无法让它工作.文档说要修改.Holiday您希望使用的假期对象,但我所做的更改.Holiday似乎没有被检测到is.holiday().有人可以提供一个加载假期的适当方法的例子吗?

r

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

使用样本空间大小= 1的sample()

我有一份我希望从中抽样的日期列表.有时样本空间只是一个日期,例如样本("10/11/11",1).日期存储为chron对象,因此当我在样本空间中只有一个日期(并且只有那时)时,样本将其视为向量(1:date).样本文档指出了这一点:

 If ‘x’ has length 1, is numeric (in the sense of ‘is.numeric’) and
 ‘x >= 1’, sampling _via_ ‘sample’ takes place from ‘1:x’.  _Note_
 that this convenience feature may lead to undesired behaviour when
 ‘x’ is of varying length in calls such as ‘sample(x)’.  See the
 examples.
Run Code Online (Sandbox Code Playgroud)

但我没有看到禁用此功能的方法.是否有一种解决方法或方法来阻止它将长度为1的对象视为数字?

r

7
推荐指数
2
解决办法
1266
查看次数

有条件地使用.Rmd文件中的knitr评估标题

是否有可能有条件地评价一个代码块,使用R降价和其相关的标题knitr?例如,如果eval_cellTRUE包括块它的标题,但无论是如果不包括eval_cellFALSE.

```{r}
eval_cell = TRUE
```

# Heading (would like to eval only if eval_cell is TRUE)
```{r eval = eval_cell}
summary(cars)
```
Run Code Online (Sandbox Code Playgroud)

r knitr

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

Pandas 按组计算过去 n 天内发生的事件次数

我有按 id 发生的事件表。如何计算过去 n 天内每种事件类型在当前行之前发生的次数?

例如,事件列表如下:

df = pd.DataFrame([{'id': 1, 'event_day': '2016-01-01', 'event_type': 'type1'},
{'id': 1, 'event_day': '2016-01-02', 'event_type': 'type1'},
{'id': 2, 'event_day': '2016-02-01', 'event_type': 'type2'},
{'id': 2, 'event_day': '2016-02-15', 'event_type': 'type3'},
{'id': 3, 'event_day': '2016-01-06', 'event_type': 'type3'},
{'id': 3, 'event_day': '2016-03-11', 'event_type': 'type3'},])
df['event_day'] = pd.to_datetime(df['event_day'])
df = df.sort_values(['id', 'event_day'])
Run Code Online (Sandbox Code Playgroud)

或者:

   event_day event_type  id
0 2016-01-01      type1   1
1 2016-01-02      type1   1
2 2016-02-01      type2   2
3 2016-02-15      type3   2
4 2016-01-06      type3   3
5 2016-03-11      type3   3
Run Code Online (Sandbox Code Playgroud)

我想计算过去 …

python pandas

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

基于共同值对两个数据帧求和

我有一个看起来像的数据框

    day.of.week count
1           0     3
2           3     1
3           4     1
4           5     1
5           6     3
Run Code Online (Sandbox Code Playgroud)

和另一个像

    day.of.week count
1           0    17
2           1     6
3           2     1
4           3     1
5           4     5
6           5     1
7           6    13
Run Code Online (Sandbox Code Playgroud)

我想基于day.of.week将df1中的值添加到df2.我试图使用ddply

total=ddply(merge(total, subtotal, all.x=TRUE,all.y=TRUE),
                   .(day.of.week), summarize, count=sum(count))
Run Code Online (Sandbox Code Playgroud)

几乎可以工作,但merge合并了具有共享值的行.例如,在上面的例子中,day.of.week = 5.它不是合并到两个记录,每个记录与计数一,而是合并到一个记录计数一,所以而不是总计数为2,我总计数为1.

       day.of.week count
  1            0     3
  2            0    17
  3            1     6
  4            2     1
  5            3     1
  6            4     1
  7            4     5
  8            5     1
  9            6 …
Run Code Online (Sandbox Code Playgroud)

r

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

如何将列按功能应用于矩阵列表

我如何将列中的函数应用于矩阵列表?例如,我有一个如下所示的列表.

[[1]]
[[1]][[1]]
    [,1] [,2] [,3]
[1,] "b"  "c"  "d" 
[2,] "y"  "y"  "y" 
[3,] "z"  "z"  "z" 

[[1]][[2]]
    [,1] [,2] [,3] 
[1,] "b"  "b"  "c" 
[2,] "c"  "d"  "d" 
[3,] "y"  "y"  "y" 
[4,] "z"  "z"  "z" 


[[2]]
    [,1] [,2]
[1,] "y"  "z" 
Run Code Online (Sandbox Code Playgroud)

这很好用:

apply(p[[1]][[1]],2,gen.fmla,y="q")

[[1]]
log(q) ~ b + y + z
<environment: 0x920732c>

[[2]]
log(q) ~ c + y + z
<environment: 0x912e66c>

[[3]]
log(q) ~ d + y + z
<environment: 0x85b608c>
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何将它应用到列表中.单独使用lapply不起作用,因为它将函数应用于整个矩阵.我试图使用apply和lapply的组合,但无法理解.

r apply

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

标签 统计

r ×8

linux ×2

apply ×1

conda ×1

data.table ×1

knitr ×1

macos ×1

pandas ×1

python ×1

shell ×1

unix ×1

virtualenv ×1