小编Ric*_*ven的帖子

如何重命名data.frame中的单个列?

我知道如果我有一个超过1列的数据框,我可以使用

colnames(x) <- c("col1","col2")
Run Code Online (Sandbox Code Playgroud)

重命名列.如果它只是一列,我该怎么做?意味着矢量或数据框中只有一列.

例:

trSamp <- data.frame(sample(trainer$index, 10000))
head(trSamp )
#   sample.trainer.index..10000.
# 1                      5907862
# 2                      2181266
# 3                      7368504
# 4                      1949790
# 5                      3475174
# 6                      6062879

ncol(trSamp)
# [1] 1
class(trSamp)
# [1] "data.frame"
class(trSamp[1])
# [1] "data.frame"
class(trSamp[,1])
# [1] "numeric"
colnames(trSamp)[2] <- "newname2"
# Error in names(x) <- value : 
#   'names' attribute [2] must be the same length as the vector [1]
Run Code Online (Sandbox Code Playgroud)

r

307
推荐指数
12
解决办法
77万
查看次数

确定列中的NA值的数量

我想计算NA数据框列中的值的数量.假设我的数据框被调用df,我正在考虑的列的名称是col.我想出的方法如下:

sapply(df$col, function(x) sum(length(which(is.na(x)))))  
Run Code Online (Sandbox Code Playgroud)

这是一个很好/最有效的方法吗?

r dataframe

123
推荐指数
9
解决办法
32万
查看次数

使用R查找包含最大值的行索引

给定以下矩阵假设我想在第二列中找到最大值:

mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3)
mat
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    7    8    9
[3,]    4    5    6
Run Code Online (Sandbox Code Playgroud)

我知道max(mat[,2])会返回8.如何返回行索引,在这种情况下第二行?

r matrix

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

使用dplyr/group_by查找行数

我正在使用mtcars数据集.我想找到特定数据组合的记录数.与count(*)SQL中的group by子句非常相似的东西.ddply()来自plyr正在为我工​​作

library(plyr)
ddply(mtcars, .(cyl,gear),nrow)
Run Code Online (Sandbox Code Playgroud)

有输出

  cyl gear V1
1   4    3  1
2   4    4  8
3   4    5  2
4   6    3  2
5   6    4  4
6   6    5  1
7   8    3 12
8   8    5  2
Run Code Online (Sandbox Code Playgroud)

使用此代码

library(dplyr)
g <- group_by(mtcars, cyl, gear)
summarise(g, length(gear))
Run Code Online (Sandbox Code Playgroud)

有输出

  length(cyl)
1          32
Run Code Online (Sandbox Code Playgroud)

我找到了传入的各种功能,summarise()但似乎没有一个对我有用.我发现的一个功能是sum(G)返回

Error in eval(expr, envir, enclos) : object 'G' not found
Run Code Online (Sandbox Code Playgroud)

尝试使用n(),返回 …

r plyr dplyr

66
推荐指数
3
解决办法
10万
查看次数

返回向量中最小值的索引?

a <- c(1, 2, 0, 3, 7)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个函数来返回最小值的索引,3.它是什么?

r

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

使用%dopar%时如何打印

我有一个foreach使用循环%dopar%使用doSNOW作为后端.如何在每次迭代中打印循环?

我下面的代码是我目前使用的,但它不打印任何东西.

foreach(ntree=rep(25,2),.combine=combine,.packages='randomForest',
    .inorder=FALSE) %dopar% {
        print("RANDOM FOREST")
        randomForest(classForm,data=data,na.action=na.action,do.trace=do.trace,ntree=ntree,mtry=mtry)
    }   
Run Code Online (Sandbox Code Playgroud)

parallel-processing foreach r

63
推荐指数
4
解决办法
3万
查看次数

一次将多个列强制转换为因子

我有一个如下所示的示例数据框:

data <- data.frame(matrix(sample(1:40), 4, 10, dimnames = list(1:4, LETTERS[1:10])))
Run Code Online (Sandbox Code Playgroud)

我想知道如何选择多个列并将它们一起转换为因子.我通常会这样做data$A = as.factor(data$A).但是当数据框非常大并且包含大量列时,这种方式将非常耗时.有谁知道更好的方法吗?

r dataframe r-factor

58
推荐指数
6
解决办法
7万
查看次数

如何迭代列表的前n个元素?

说我有一个列表,我想迭代n它们中的第一个.在Python中编写此代码的最佳方法是什么?

python list slice

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

为什么10的幂在科学记数法上以5次方式打印?

我想知道10的权力是否以及如何与控制台中科学记数法的印刷相关.我搜索过R docs并且没有发现任何相关内容,或者我真的理解.

首先,我scipendigits设置

unlist(options("scipen", "digits"))
# scipen digits 
#      0      7 
Run Code Online (Sandbox Code Playgroud)

现在,10的功率通常打印到4次方,然后在5次方打印切换到科学记数.

10^(1:4)
# [1]    10   100  1000 10000
10^(1:5)
# [1] 1e+01 1e+02 1e+03 1e+04 1e+05
Run Code Online (Sandbox Code Playgroud)

有趣的是,这不会发生了一些其他的数字大于10.

11^(1:5)
# [1]     11    121   1331  14641 161051
Run Code Online (Sandbox Code Playgroud)

从以下情况来看,5位数似乎很重要.

100^(1:2)
# [1]   100 10000
100^(1:3)
# [1] 1e+02 1e+04 1e+06
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

为什么科学记数法在第4和第5次幂之间激活10次而不是其他数字?数字5是否显着?此外,为什么5而不是更接近22的最大数字选项的数字?

r scientific-notation

41
推荐指数
2
解决办法
3676
查看次数

将NA转换为因子级别

我有一个带有NA值的向量,我想用新的因子级别替换NA.

a = as.factor(as.character(c(1, 1, 2, 2, 3, NA)))
a
[1] 1    1    2    2    3    <NA>
Levels: 1 2 3
Run Code Online (Sandbox Code Playgroud)

这有效,但这似乎是一种奇怪的方式.

a = as.factor(ifelse(is.na(a), "NA", a))
class(a)
[1] "factor"
Run Code Online (Sandbox Code Playgroud)

这是预期的输出:

a
[1] 1  1  2  2  3  NA
Levels: 1 2 3 NA
Run Code Online (Sandbox Code Playgroud)

r missing-data

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