小编drs*_*vok的帖子

我可以以编程方式更新data.table中的一组列(到因子)的类型吗?

我想将data.table中的一组列修改为因子.如果我事先知道列的名称,我认为这将是直截了当的.

library(data.table)
dt1  <- data.table(a = (1:4), b = rep(c('a','b')), c = rep(c(0,1)))
dt1[,class(b)]
dt1[,b:=factor(b)]
dt1[,class(b)]
Run Code Online (Sandbox Code Playgroud)

但我没有,而是有一个变量名列表

vars.factors  <- c('b','c')
Run Code Online (Sandbox Code Playgroud)

我可以毫无问题地将因子函数应用于它们......

lapply(vars.factors, function(x) dt1[,class(get(x))])
lapply(vars.factors, function(x) dt1[,factor(get(x))])
lapply(vars.factors, function(x) dt1[,factor(get(x))])
Run Code Online (Sandbox Code Playgroud)

但我不知道如何重新分配或更新数据表中的原始列.

这失败了......

  lapply(vars.factors, function(x) dt1[,x:=factor(get(x))])
  # Error in get(x) : invalid first argument 
Run Code Online (Sandbox Code Playgroud)

就像这样......

  lapply(vars.factors, function(x) dt1[,get(x):=factor(get(x))])
  # Error in get(x) : object 'b' not found 
Run Code Online (Sandbox Code Playgroud)

NB.我试着在这里提出的答案没有任何运气.

r r-factor data.table

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

升级R后无法安装devtools包

我刚刚升级到R 3.2.1,并且无法再安装devtools包.

我得到以下输出:

install.packages('devtools')

trying URL 'http://cran.ma.imperial.ac.uk/bin/macosx/mavericks/contrib/3.2/devtools_1.8.0.tgz'
    Content type 'application/x-gzip' length 324861 bytes (317 KB)
    ==================================================
    downloaded 317 KB


    The downloaded binary packages are in
        /var/folders/zd/112dtz1x3575n4z10cm7nflw0000gn/T//RtmpzsBSdp/downloaded_packages
Run Code Online (Sandbox Code Playgroud)

加载库:

library('devtools')
Run Code Online (Sandbox Code Playgroud)

loadNamespace出错(j < - i [[1L]],c(lib.loc,.libPaths()),versionCheck = vI [[j]]):没有名为'curl'的包错误:包或命名空间加载'devtools'失败了

我已经阅读了以下文章 - 安装devtools软件包时遇到的问题 - 这似乎有一个Linux(?)的解决方案,但我已经curl安装在我的系统上,我看不出这对我有什么帮助.

r devtools

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

从长到高转换但是对列标题进行分组

我有一个长形式的data.frame.我想重塑一下,但我关心列的排序.

这是一个玩具的例子.实际上,我会有更多的团体(grp).

# Minimum working example

mwe <- "grp mean sd label

1  C90   90 19 Heart_rate
2  D20   86 18 Heart_rate
3  H09   80 16 Heart_rate
9  Z89   89 18 Heart_rate"

# Read in the text data

dd <- read.table(text=mwe, header=TRUE)
Run Code Online (Sandbox Code Playgroud)

我试过这个解决方案没有成功.

dcast(setDT(dd), label~grp, value.var=list("mean", "sd"), sep="_" )

    label mean_C90 mean_D20 mean_H09 mean_Z89 sd_C90 sd_D20 sd_H09 sd_Z89
1: Heart_rate       90       86       80       89     19     18     16     18
Run Code Online (Sandbox Code Playgroud)

我想是后列label下令由grp然后通过meansd …

r reshape2 data.table

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

标签 统计

r ×3

data.table ×2

devtools ×1

r-factor ×1

reshape2 ×1