小编Use*_*239的帖子

将 NaN 替换为 NA

假设有以下数据表:

DT <- data.table(a=c(1,2,3,4,5,6),b=c(NaN,NaN,NaN,4,5,6),c=c(NaN,3,3,3,NaN,NaN))
Run Code Online (Sandbox Code Playgroud)

如何将每列中的所有NaN值替换为, 即?NA寻找一种优雅(简短)的方法来做到这一点,但我也想知道是否可以使用lapply,就像我在下面尝试的那样。

到目前为止我的方法:

DT[,lapply(SD,function(x){x[is.nan(x)] := NA}),.SDcols=c("a","b","c")]  
Run Code Online (Sandbox Code Playgroud)

我的代码的实际结果是:

(x[is.nan(x)], NA)中的错误:=:检查 is.data.table(DT) == TRUE。否则,:= 和:=(...) 被定义为在 j 中使用,仅一次且以特定方式使用。请参阅帮助(“:=”)。

r data.table

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

R中的页面函数

我正在尝试通过页面在 R 中打印简单的输出,当前在 Windows 10 计算机上。过去它有效,现在不再有效。Windows通常会询问应该使用哪个程序打开该文件,但现在不再弹出窗口了。其他人也遇到这些问题,或者知道如何解决吗?可能与最新的大型 Windows 更新有关,但不一定如此。我使用 Rstudio 作为 IDE。

例子:

x <- data.frame(matrix(1:9,3,3))
page(x,method="print") # no effect
Run Code Online (Sandbox Code Playgroud)

Windows 10(家庭版),版本:10.0.18362 Build 18362。同时,将RStudio更新到最新版本1.2.1335(64位),R也更新到最新版本3.6.1(64位)。问题仍然出现。

编辑:使用 Windows 7 机器进行测试,Rstudio 最新版本 1.2.1335(64 位)。在这里工作得很好。问题似乎与 Windows 10 有关。

Edit2:使用不同的Windows 10(企业版)机器进行测试,版本:10.0.14393 Build 14393。这里工作正常。问题似乎与最新版本的 Windows 10 和/或家庭版与企业版有关。

有人提到实现依赖于系统。下面是 Windows 的实现:

page <-
function (x, method = c("dput", "print"), ...) 
{
  local.file.show <- function(file, title = subx, delete.file = TRUE, 
                              pager = getOption("pager"), ...) file.show(file, 
                                                                         title = title, delete.file = delete.file, pager = pager)
  local.dput <- function(x, file, …
Run Code Online (Sandbox Code Playgroud)

windows r rstudio

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

使用行号和值过滤器进行选择

我有以下简单的data.table“ test”。我想选择X等于“ A”的第3至8行的所有行:

library(data.table)
set.seed(1)
test <- data.table(X=c(rep("A",5),rep("B",5)),Y=rnorm(10),Z=rnorm(10))

test[3:8 & X == "A"] # gives the not desired output:

1: A -0.6264538  1.5117812
2: A  0.1836433  0.3898432
3: A -0.8356286 -0.6212406
4: A  1.5952808 -2.2146999
5: A  0.3295078  1.1249309
Warning message:
  In 3:8 & X == "A" :
  longer object length is not a multiple of shorter object length

# desired outcome:

3: A -0.8356286 -0.62124058
4: A  1.5952808 -2.21469989
5: A  0.3295078  1.12493092
Run Code Online (Sandbox Code Playgroud)

在3:8行之间,我只选择X ==“ A”的那些。这怎么可能?请注意,使用test[3:8][X == "A"] …

r subset data.table

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

将宽形状重塑为长形状,保留行名中的 ID 变量

我正在尝试将以下数据转换为 R 中的长格式:

testdata <- data.frame(rnorm(10),rnorm(10),rnorm(10))
rownames(testdata) <- paste0("ID",1:10) # Ids
colnames(testdata) <- c(2001,2002,2003) # Years
testdata
Run Code Online (Sandbox Code Playgroud)

所以列 = 时间,行 = ID。应该不会太难,但在所有示例中我发现情况恰恰相反。如何在任何其他流行的数据帧包中完成此datatable操作reshape?感谢您的任何提示。我知道一种通过转置数据的方法,但这似乎是实现此目的的一种相当低效的方法。

r reshape2

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

标签 统计

r ×4

data.table ×2

reshape2 ×1

rstudio ×1

subset ×1

windows ×1