小编Wet*_*eet的帖子

无法在data.table [,:=]函数中使用eval(parse(...))

我不确定我是否在这里犯了错误(eval(parse(...))也许是使用的危险),但在这里我试图eval(parse(...))在更新data.table列时使用,这会产生错误.以下是我的代码.

require(data.table)
# Loading required package: data.table
# data.table 1.9.2  For help type: help("data.table")
DT<-data.table(x=seq(1,10,1),
               y=seq(2,20,2))
DT[,y:=y*eval(parse(text="1*2"))] #Doesn't work
# Error in y * expression(1 * 2) : non-numeric argument to binary operator
variable <- eval(parse(text="1*2"))
DT[,y:=y*variable] #Works
DT
#     x  y
# 1:  1  4
# 2:  2  8
# 3:  3 12
# 4:  4 16
# 5:  5 20
# 6:  6 24
# 7:  7 28
# 8:  8 32 …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

R:使用具有数字位置的重复列名来子集data.table

我有一个看起来像这样的data.table

> dput(DT)
   A B C A B C D
1: 1 2 3 3 5 6 7
2: 2 1 3 2 1 3 4
Run Code Online (Sandbox Code Playgroud)

这是输入

DT <- structure(list(A = 1:2, B = c(2L, 1L), C = c(3L, 3L), A = c(3L, 
  2L), B = c(5L, 1L), C = c(6L, 3L), D = c(7L, 4L)), .Names = c("A", 
  "B", "C", "A", "B", "C", "D"), row.names = c(NA, -2L), class = c("data.table", 
  "data.frame"))
Run Code Online (Sandbox Code Playgroud)

基本上,我想根据标题对它们进行子集化.所以对于标题"B",我会这样做:

subset(DT,,grep(unique(names(DT))[2],names(DT)))
   B B
1: 2 2 …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

R:合并data.table并填写NA

假设有3个数据表:

dt1<-data.table(Type=c("a","b"),x=1:2)
dt2<-data.table(Type=c("a","b"),y=3:4)
dt3<-data.table(Type=c("c","d"),z=3:4)
Run Code Online (Sandbox Code Playgroud)

我想将它们合并到1个数据表中,所以我这样做:

dt4<-merge(dt1,dt2,by="Type") # No error, produces what I want
dt5<-merge(dt4,dt3,by="Type") # Produces empty data.table (0 rows) of 4 cols: Type,x,y,z
Run Code Online (Sandbox Code Playgroud)

有没有办法让dt5代替这样?:

> dt5
   Type x y z
1:    a 1 3 NA
2:    b 2 4 NA
3:    c NA NA 3
4:    d NA NA 4
Run Code Online (Sandbox Code Playgroud)

merge r data.table

5
推荐指数
2
解决办法
1260
查看次数

unix vim处理BufRead Auto命令时检测到错误

我是本指南的新vim用户,以自动使vim缩进python代码并标记不必要的空格:https ://realpython.com/blog/python/vim-and-python-a-match-made-in-heaven/# vim扩展

我在.py文件上启动vim时遇到的问题是: Error detected while processing BufRead Auto commands for "*.py": E28: No such highlight group name: BadWhitespace

我将此错误注释掉以下几行:

" Flag unnecessary whitespace                                           
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/   <- this line   

" UTF8 Support                                                          
set encoding=utf-8                                                      
" Proper PEP8 Identation                                                
au BufNewFile,BufRead *.py                                              
    \ set tabstop=4                                                     
"    \ set softtabstop=4      <-- this line                                          
    \ set shiftwidth=4                                                  
    \ set textwidth=79                                                  
    \ set expandtab                                                     
    \ set autoindent                                                    
    \ set fileformat=unix         
Run Code Online (Sandbox Code Playgroud)

如何解决此错误?这是我完整的.vimrc文件:

set nocompatible              " required
filetype off                  " …
Run Code Online (Sandbox Code Playgroud)

python vim

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

在数据帧列表上使用rbind.fill时忽略丢失的数据帧

我有许多通常采用格式的file.[i]数据帧,但偶尔会丢失数据帧:

file.1 file.2 file.3 file.4 file.5 file.6 file.7 file.9 file.11 file.13
Run Code Online (Sandbox Code Playgroud)

我试图做的是这样的:

 dt <- do.call(rbind.fill, 
              lapply(paste("file.", 1:length(filenames), sep=""), get))
Run Code Online (Sandbox Code Playgroud)

我得到:

Error in FUN(c("file.1", "file.2", "file.3", "file.4", "file.5", "file.6",  : 
  object 'file.8' not found
Run Code Online (Sandbox Code Playgroud)

有没有办法rbind.fill忽略丢失的数据帧?

r data-manipulation

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

rbindlist data.tables具有不同的列数

我想知道我如何rbindlist具有不同列数的数据表,并用像rbind.fill这样的NA填充空行

 DT1 <- data.table(A = 1:3)
 DT2 <- data.table(A  =4:5, B = letters[4:5])
 l <- list(DT1, DT2)
 rbindlist(l)
 #  Error in rbindlist(l) : 
 #   Item 2 has 2 columns, inconsistent with item 1 which has 1 columns
Run Code Online (Sandbox Code Playgroud)

我想得到的是

   A B
1: 1 NA
2: 2 NA
3: 3 NA
4: 4 d
5: 5 e
Run Code Online (Sandbox Code Playgroud)

r data.table

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

如何从gwidgets中的函数返回值

我有以下代码来选择输入和输出文件夹的目录.

require(gWidgets2RGtk2)

input=NULL
win = gwindow("Stage 1")
g = ggroup(horizontal=FALSE,cont=win)
  g1=ggroup(cont=g)
    svalue(input)<-gbutton("Input folder",cont=g1,expand=TRUE,handler=function(...) {
      input=gfile(type="selectdir")
      gmessage(paste0("Input directory set to ",input))
      input
    })
g2=ggroup(cont=g)
    gbutton("Ouput folder",cont=g2,expand=TRUE,handler=function(...) {
      output=gfile(type="selectdir")
      gmessage(paste0("Output directory set to ",output))
    })
Run Code Online (Sandbox Code Playgroud)

但是,在运行时,代码不会返回输入和输出文件夹目录.谁能告诉我这里我做错了什么?

r gwidgets

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

ggplot2:删除颜色并在条形图中绘制边框

我目前正在使用ggplot2绘制一个条形图,其中填充的级别太多.结果,我无法判断一个栏结束而另一个开始.

这是我现在正在做的样本数据代码.

variable<-c("X1","X1","X1","X1","X1","X1","X1","X1","X1","X2","X2","X2","X2","X2","X2","X2","X2","X2","X3","X3","X3","X3","X3","X3","X3","X3","X3")
Length.1<-c(4.24,0.81,0.81,NA,NA,NA,NA,NA,NA,4.24,0.81,0.81,NA,NA,NA,NA,NA,NA,4.24,0.72,0.72,0.16,NA,NA,NA,NA,NA)
data<-data.frame(variable=as.factor(variable),value=as.factor(1:length(variable)),Length.1=Length.1)

## Plots a stacked bar chat in ggplot2 with text labels. Credit to MYaseen208
library(ggplot2)
p <- qplot(variable, Length.1, data = data, geom = "bar", fill = value,     theme_set(theme_bw()))
p + geom_text(aes(label = Length.1), size = 3, hjust = 0.5, vjust = 3, position =     "stack") 
Run Code Online (Sandbox Code Playgroud)

目前,情节看起来很好.然而,在我的实际数据集中,length(data$value)要高得多,我无法清楚地看到不同条形图之间的差异.因此,我希望将条形图的颜色更改为白色,并在每个条形图周围绘制黑色边框.有谁知道我怎么做到这一点?

r ggplot2

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

R:将列乘以数据表中的常量

我正在尝试更正我的数据表,因此我的列具有相同的单位.这是我所拥有的一个例子.

hh:mm   A   V   W   kA  V   kW  A   kV  kW
11:00   13.84   470.16  6509.88 14.89   467.85  6964.38 15.74   464.01  7303.13
11:05   12.54   475.17  5959.22 13.40   474.52  6358.89 13.34   473.13  6311.80
11:10   9.73    476.20  4632.14 10.36   473.38  4905.86 10.38   472.73  4907.14
11:15   9.20    479.30  4410.89 9.65    482.79  4659.67 9.73    479.09  4659.33
11:20   11.28   482.22  5437.78 12.03   484.95  5835.33 12.24   476.36  5829.44
11:25   11.66   481.64  5614.56 12.76   479.95  6124.56 12.88   476.86  6139.33
11:30   10.38   475.13  4934.00 11.99   480.96  5760.44 11.50   478.77 …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

R:帮助融化"具有不同行"的数据框

我有一个数据框,我不能reshape2 ::融化.任何人都可以帮我看看为什么?

> dput(x2)
structure(list(`26492` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, …
Run Code Online (Sandbox Code Playgroud)

r reshape2 data.table

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

R:在子集化期间丢失数据(data.table)

当我尝试对data.table进行子集时,我正在丢失数据.

这是从中编写文件的.csv

Timestamp,Date,Time,SN,A.Ms.Amp,A.Ms.Vol,A.Ms.Watt,Pac
2013-10-01 12:00:00,2013-10-01,12:00:00,2110000001,23.04,465.43,10723,13544.5
2013-10-01 12:00:00,2013-10-01,12:00:00,2110000002,7.81,474.16,3704,6860
2013-10-01 12:00:00,2013-10-01,12:00:00,2110000003,6.97,484.19,3374,6661
2013-10-01 12:05:00,2013-10-01,12:05:00,2110000001,23.19,467.05,10830,13576
2013-10-01 12:05:00,2013-10-01,12:05:00,2110000002,8.4,462.52,3883.5,7366.5
2013-10-01 12:05:00,2013-10-01,12:05:00,2110000003,7.72,470.6,3631,7169
2013-10-01 12:10:00,2013-10-01,12:10:00,2110000001,23.98,470.29,11278.5,14127.5
2013-10-01 12:10:00,2013-10-01,12:10:00,2110000002,8.62,458.47,3952,7475.5
2013-10-01 12:10:00,2013-10-01,12:10:00,2110000003,7.9,462.62,3654,7182.33
2013-10-01 12:15:00,2013-10-01,12:15:00,2110000001,24.27,467.37,11342,14193
2013-10-01 12:15:00,2013-10-01,12:15:00,2110000002,8.61,458.96,3949,7502
2013-10-01 12:15:00,2013-10-01,12:15:00,2110000003,8.13,458.31,3725,7338
2013-10-01 12:20:00,2013-10-01,12:20:00,2110000001,22.3,461.71,10279.5,12735.5
2013-10-01 12:20:00,2013-10-01,12:20:00,2110000002,8.51,461.87,3929,7553.5
2013-10-01 12:20:00,2013-10-01,12:20:00,2110000003,7.83,462.19,3618.5,7331.5
Run Code Online (Sandbox Code Playgroud)

这是我运行的代码:

library(data.table)
a<-fread("complete1.csv")
a[,`:=`(Timestamp=ymd_hms(Timestamp),
Date=ymd(Date),
SN=as.factor(SN))]
a[SN==c("2110000001","2110000002"),c("Timestamp","Date","Time","SN","A.Ms.Watt","Pac"),with=FALSE]
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

   > a[SN==c("2110000001","2110000002"),c("Timestamp","Date","Time","SN","A.Ms.Watt","Pac"),with=FALSE]
             Timestamp       Date     Time         SN A.Ms.Watt     Pac
1: 2013-10-01 12:00:00 2013-10-01 12:00:00 2110000001   10723.0 13544.5
2: 2013-10-01 12:00:00 2013-10-01 12:00:00 2110000002    3704.0  6860.0
3: 2013-10-01 12:10:00 2013-10-01 12:10:00 2110000001   11278.5 14127.5
4: 2013-10-01 12:10:00 2013-10-01 12:10:00 2110000002    3952.0 …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

如何在使用 vim 的同时让 vim 突出显示尾随空格?

遵循Vim 突出显示日晒配色方案,我尝试了这个

" Default color scheme
syntax enable
 set background=dark
colorscheme solarized
autocmd ColorScheme * highlight RedundantSpaces ctermbg=red
match RedundantSpaces /\s\+$/
Run Code Online (Sandbox Code Playgroud)

但是我仍然无法让我的空格出现。这是我的 .vimrc:

set nocompatible              " required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'

Plugin 'tmhedberg/SimpylFold'
Plugin 'Vimjas/vim-python-pep8-indent'
Plugin 'vim-syntastic/syntastic'
Plugin 'nvie/vim-flake8'
Plugin 'jeffkreeftmeijer/vim-numbertoggle'
Plugin 'altercation/vim-colors-solarized'

" …
Run Code Online (Sandbox Code Playgroud)

vim

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

char*s和char*s有什么区别?

根据标题.我看到某些人宣称指针为char* s,而其他人则将其声明为char *s.我也看到有些人在做,s = (char*) malloc(5)而不是做*s = malloc(5).那之间有什么区别吗?抱歉,如果重复这个问题,我理解指针的概念,但很难理解用于表示C中指针的语法.

c pointers

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

标签 统计

r ×10

data.table ×7

vim ×2

c ×1

data-manipulation ×1

ggplot2 ×1

gwidgets ×1

merge ×1

pointers ×1

python ×1

reshape2 ×1