小编Mat*_*erg的帖子

如何将包含十进制数的因子列转换为数字?

我有一个csv文件,当我使用此命令

SOLK<-read.table('Book1.csv',header=TRUE,sep=';')
Run Code Online (Sandbox Code Playgroud)

我得到了这个输出

> SOLK
          Time Close Volume
1   10:27:03,6  0,99   1000
2   10:32:58,4  0,98    100
3   10:34:16,9  0,98    600
4   10:35:46,0  0,97    500
5   10:35:50,6  0,96     50
6   10:35:50,6  0,96   1000
7   10:36:10,3  0,95     40
8   10:36:10,3  0,95    100
9   10:36:10,4  0,95    500
10  10:36:10,4  0,95    100
.      .         .       .
.      .         .       .
.      .         .       .
285 17:09:44,0  0,96    404
Run Code Online (Sandbox Code Playgroud)

str(SOLK)结果这

    'data.frame':   285 obs. of  3 variables:
 $ Time  : Factor w/ 174 levels …
Run Code Online (Sandbox Code Playgroud)

r numeric dataframe r-factor

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

调用堆栈?retainstack?namestack?

因子手册的这一页讨论了存储在continuation中的这些类型的堆栈:

  • datastack
  • retainstack
  • 调用堆栈
  • namestack
  • catchstack

这些堆栈究竟拥有什么?对我来说最令人困惑的三个是callstack,retainstack和namestack.

continuations concatenative-language factor-lang

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

将引用保留为因子中的元组成员

我希望保留引用作为因子中元组的成员.但是当我尝试对它执行'call'时,我得到错误'无法将调用应用于运行时计算值'.请注意,将函数标记为"内联"不会执行任何操作.

示例代码:

USING: accessors kernel ;
IN: stackoverflow

TUPLE: quottuple quot ;
C: <quottuple> quottuple

: call-quot ( quottuple -- result )
    quot>> call ; inline

: main ( -- )
    [ 1 ] <quottuple>
    call-quot drop ;

MAIN: main
Run Code Online (Sandbox Code Playgroud)

factor-lang

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

在R中使用ifelse on factor

我正在重组一个物种名称的数据集.它有一个带有拉丁名称的列和具有普通名称的列(如果可用).我想制作第3列,在可用时给出琐碎的名称,否则为拉丁名称.琐碎的名字和拉丁名字都属于因子级.我试过if-loop:

  if(art2$trivname==""){  
    art2$artname=trivname   
    }else{  
      art2$artname=latname  
    }  
Run Code Online (Sandbox Code Playgroud)

它给了我正确的trivnames,但只在提供拉丁名字时给出了NA.
当我使用ifelse时,我只会得到数字.

一如既往,所有帮助赞赏:)

if-statement r r-factor

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

如何将具有一列的数据帧列表写入文件?

这是我的虚拟数据集:

dataset<-data.frame(a=c(1,2,3,4),b=c('a','b','c','d'), c=c("HI","DD","gg","ff"))
g=list(c("a","b"),c(2,3,4), c(44,33,11,22),c("chr","ID","i","II"))
dataset$l<-g
dataset

 a b  c              l
1 1 a HI           a, b
2 2 b DD        2, 3, 4
3 3 c gg 44, 33, 11, 22
4 4 d ff chr, ID, i, II

> mode(dataset$l)
[1] "list"
Run Code Online (Sandbox Code Playgroud)

当我尝试将数据集写入文件时:

> write.table(dataset, "dataset.txt", quote=F, sep="\t")
Error in write.table(x, file, nrow(x), p, rnames, sep, eol, na, dec, as.integer(quote),  : 
  unimplemented type 'list' in 'EncodeElement'
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

r

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

删除重复的2列排列

我找不到适合该问题的标题,请随时对其进行编辑。

我有这个数据

  section time to from
1       a    9  1    2
2       a    9  2    1
3       a   12  2    3
4       a   12  2    4
5       a   12  3    2
6       a   12  3    4
7       a   12  4    2
8       a   12  4    3
Run Code Online (Sandbox Code Playgroud)

我想删除具有相同tofrom同时的重复行,而不计算2列的排列:例如(1,2)和(2,1)是重复的。

因此最终输出将是:

  section time to from
1       a    9  1    2
3       a   12  2    3
4       a   12  2    4
6       a   12  3    4
Run Code Online (Sandbox Code Playgroud)

我有一个通过构造一个新的列键的解决方案,例如

  key <- paste(min(to,from),max(to,from)) …
Run Code Online (Sandbox Code Playgroud)

r duplicates dataframe

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

在具有多个匹配项的 data.table 中滚动连接

我有一个关于滚动连接的评论/问题
让 X,Y 是:

set.seed(123);
X <- data.table(x=c(1,1,1,2,2),y=c(T,T,F,F,F),t=as.POSIXct("08:00:00.000",format="%H:%M:%OS")+sample(0:999,5,TRUE)/1e3)
Y <- copy(X)
set.seed(123)
Y[,`:=`(IDX=.I,t=t+sample(c(-5:5)/1e3,5,T))]
Y <- rbindlist(list(Y, X[5,][,IDX:=6][,t:=t+0.001], X[5,][,IDX:=7][,t:=t+0.002]))
setkey(X,x,y,t)
setkey(Y,x,y,t)
Run Code Online (Sandbox Code Playgroud)

这里X并按Y以下顺序排序x,y,t

R) X
   x     y                       t
1: 1 FALSE 2013-06-20 08:00:00.407
2: 1  TRUE 2013-06-20 08:00:00.286
3: 1  TRUE 2013-06-20 08:00:00.788
4: 2 FALSE 2013-06-20 08:00:00.882
5: 2 FALSE 2013-06-20 08:00:00.940
R) Y
   x     y                       t IDX
1: 1 FALSE 2013-06-20 08:00:00.407   3
2: 1  TRUE 2013-06-20 08:00:00.284   1
3: 1  TRUE 2013-06-20 08:00:00.791   2 …
Run Code Online (Sandbox Code Playgroud)

r data.table rolling-computation

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

在 ggplot 中进行子集化时的因子顺序

我在 x 轴上有因子,并以使用 ggplot 直观绘制的方式对这些因子水平进行排序。效果很好。但是,当我在 ggplot 中使用 subset 命令时,它会重新排序我的原始因子序列。是否可以在 ggplot 中进行子集化并保留因子水平的顺序?

这是数据和代码:

library(ggplot2)
library(plyr)
dat <- structure(list(SubjectID = structure(c(12L, 4L, 6L, 7L, 12L, 
7L, 5L, 8L, 14L, 1L, 15L, 1L, 7L, 1L, 7L, 5L, 4L, 2L, 9L, 6L, 
7L, 13L, 12L, 2L, 15L, 3L, 5L, 13L, 13L, 10L, 7L, 8L, 10L, 10L, 
1L, 10L, 12L, 7L, 6L, 10L), .Label = c("s001", "s002", "s003", 
"s004", "s005", "s006", "s007", "s008", "s009", "s010", "s011", 
"s012", "s013", "s014", "s015"), class = "factor"), Parameter = …
Run Code Online (Sandbox Code Playgroud)

r subset ggplot2 r-factor

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

R样本概率:默认为等权;为什么指定相等的权重会导致返回不同的值?

我有一个关于 R 中样本函数的简单问题。我从长度为 5 的输入向量中随机采样 0 和 1,并将它们相加,该向量指定要运行的试验次数并设置种子以生成可再现的随机数数字。种子按预期工作,但根据我在概率语句中输入的内容,我得到不同的随机数矩阵。在这种情况下,我假设 prob=NULL 应该与 prob=c(0.5,0.5) 相同。为什么不是呢?

vn<-c(12, 44, 9, 17, 28)

> do.call(cbind, lapply(c(1:10),function(X) {set.seed(X); sapply(vn, function(Y) sum(sample(x=c(0,1),size=Y,replace=T)), simplify=TRUE)}))

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    6    7    7    6    6    9    3    6    2     5
[2,]   22   21   20   29   22   24   24   19   25    19
[3,]    4    8    3    5    4    4    4    6    4     2
[4,]    8    4   12    9   11    7    9   10    8     8
[5,] …
Run Code Online (Sandbox Code Playgroud)

r sample probability

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

使用drop = FALSE分配给子矩阵对角线时出错

调用时diag<-,只要不指定,就可以传递矩阵的一部分并获得正确的行为drop=FALSE.

> X <- matrix(0, 3, 3)
> diag(X[-1,]) <- c(1,2)
> X
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    1    0    0
[3,]    0    2    0
Run Code Online (Sandbox Code Playgroud)

指定drop=false是一个不同的故事

> diag(X[-1,,drop=FALSE]) <- c(3,4)
Error in diag(X[-1, , drop = FALSE]) <- c(3, 4) : 
  incorrect number of subscripts
Run Code Online (Sandbox Code Playgroud)

注意:

> identical(X[-1,], X[-1,,drop=FALSE])
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

正如MrFlick所指出的,当drop参数导致相同的错误时,赋值给切片:

X[1,] <- 1
X[1,,drop=TRUE] <- 2
Error in X[1, , drop = TRUE] <- 2 : incorrect …
Run Code Online (Sandbox Code Playgroud)

r

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