小编Sot*_*tos的帖子

is.atomic()vs is.vector()

我不明白之间的差别is.atomic()is.vector().根据我的理解,is.vector()返回TRUE同类1D数据结构.我相信逻辑,双精度,整数,字符,复合体和原始数据的is.atomic()回报TRUE......但是,不会is.vector()这样吗?所以我想也许差异在于它的尺寸,但在双打的数据框中is.atomic()返回FALSE,这让我更加困惑啊......

另外,原子矢量和法向量之间有什么区别?

谢谢你的澄清!

r vector atomic typeof data-structures

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

为什么这个简单的功能不起作用?

我首先定义了新变量x,然后x在其体内创建了需要的函数(而不是参数).见下面的代码

x <- c(1,2,3)
f1 <- function() {
  x^2
}

rm(x)

f2 <- function() {
  x <- c(1,2,3)
  f1()
}

f(2)  
Error in f1() : object 'x' not found
Run Code Online (Sandbox Code Playgroud)

当我删除x并定义f2了首先定义x然后执行的新函数时f1,它会显示x未找到的对象.

我只是想知道为什么这不起作用以及如何克服这个问题.我不想x成为名字作为参数f1.

请提供适当的标题,因为我不知道这是什么问题.

r function

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

在dplyr中解释ungroup()

如果我有一个数据集工作,我想对数据进行分组(即通过country),计算汇总统计(mean()),然后ungroup()data.frame有一个与原始尺寸的数据集(country- year)和一个新列,其中列出了平均每个国家(重复超过n年),我该怎么做dplyr?该ungroup()函数不返回data.frame原始尺寸:

gapminder %>%
    group_by(country) %>%
    summarize(mn = mean(pop)) %>%
    ungroup() # returns data.frame with nrows == length(unique(gapminder$country))
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

列(垂直)列表的总和列表

就像数据帧中的列和X1 $ value + X2 $值一样,我想在尽可能少的R代码的列表列表上执行它,而不是使用for-loop.谢谢.

输入:

n1 <- c(1,2,3)
n2 <- c(2,3,4)
df1 <- data.frame(n1,n2)

n1 <- c(3,2,1)
n2 <- c(5,5,6)
df2 <- data.frame(n1,n2)

mylist <- list(df1, df2)

n0 <- c(0,0,0) #init compute
compute <- data.frame(n0)

for(i in 1:length(mylist)){
    compute[,1] <- mylist[[i]]$n1 + compute[,1] 
}
Run Code Online (Sandbox Code Playgroud)

期望的输出:

>compute
  n0
1 4
2 4
3 4
Run Code Online (Sandbox Code Playgroud)

r

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

如何反转单词?

我需要能够在 R 中反转单词。例如,将“这是我的文本”转换为“我的文本是这个”。我尝试使用 stringr 包中的 word 函数,如下所示,但没有用,只有“”

word("this is my text", -1,1)
[1]  "" 
Run Code Online (Sandbox Code Playgroud)

任何建议为什么上述方法不起作用或任何其他方式来反转单词?

r stringr

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

如何找到最长的连续数及其位置?

我有一个如下的数字向量。

V1 <- c(1:3, 7:20, 23,45,55,27:30, 66, 88:89)
Run Code Online (Sandbox Code Playgroud)

如何找到最长的连续序列和位置?在这种情况下,所述靶序列的长度是14与该位置是18 请告知

我的丑是使用whichshift

V1 <- c(1:3, 7:20, 23,45,55,27:30, 66, 88:89)
V2 <- c(1, which(V1-shift(V1)!=1)
max(V2-shift(V2, fill =0))
Run Code Online (Sandbox Code Playgroud)

但是我找不到 18

r

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

如何将 na.locf() 用于因子“输入”?

我想根据该 ID 本身的前几年组的值在组变量中填充我的数据集的 NA。该na.locf(newData, na.rm = TRUE)部分代码不能正常工作。我认为这是因为输入不是数字。或者是另一回事?有谁知道如何解决这个问题?

  for (i in my_data$ID){
    newData = my_data[my_data$ID==i,c('ID','Year', 'group')][3]
    na.locf(newData,na.rm = TRUE)

  } 
Run Code Online (Sandbox Code Playgroud)

我的数据集非常大。但我提供了这个作为我需要的样本:

structure(list(ID = c(1L, 2L, 3L, 1L, 1L, 1L), Year = c(2000L, 
2000L, 2001L, 2001L, 2002L, 2003L), Group = structure(c(2L, 3L, 
2L, 1L, 1L, 4L), .Label = c("", "\"A\"", "\"B\"", "\"C\""), class = "factor")), row.names = c(NA, 
6L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

结果应该是这样的:

structure(list(ID = c(1L, 1L, 1L, 1L, 2L, 2L), Year = c(2000L, 
2001L, 2002L, 2003L, 2000L, 2002L), Group …
Run Code Online (Sandbox Code Playgroud)

r na

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

预测精度 - MAPE 和零值

嘿伙计们,经过时间序列的预测过程,我获得了这样的数据框(df)(数字只是示例):

fcast_mean | actual_values
12,5       | 12,3
1,1        | 0
24,3       | 22,7
29,6       | 30,4
...        | ...
Run Code Online (Sandbox Code Playgroud)

我知道如果 actual_value 为零,则 MAPE 是无限的,这就是我的情况!我的问题是:是否有数学错把0,而不是天道酬勤行中(在这种情况下,第2行),其中abs(actual_values - fcast$mean)/abs(actual_values)等于Inf?这种变化对MAPE的计算有什么影响?它不再是预测准确性的可靠指标?

我为 MAPE 编写的 R 代码部分是:

x <- abs(df$actual_values-df$fcast_mean)/abs(df$actual_values)
x[is.infinite(x)] <- 0
MAPE <- (1/nrow(df$actual_values))*(sum(x))*100
Run Code Online (Sandbox Code Playgroud)

r forecasting

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

返回使用.max的位置向量

  x <- seq(1:100)
  y <- 30
Run Code Online (Sandbox Code Playgroud)

如果我想确定x> y的累积和的位置

  which.max(cumsum(x) >= y)
  [1] 9 # 
Run Code Online (Sandbox Code Playgroud)

相反,如果y是一个向量,即我想为y的每个元素返回x的位置

  y <- c(30, 60, 80, 90)
  which.max(cumsum(x) >= y)
  [1] 9
Run Code Online (Sandbox Code Playgroud)

为什么不重新调整位置向量?

r which cumsum

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

如何使crossprod更快

它需要(在我的MBP上使用2.9 GHz Intel Core i7和16 GB内存)超过20秒才能获得40,000 x 1,000矩阵的交叉产品:

> system.time(a <- crossprod(matrix(pi,40000,1000)))
   user  system elapsed 
 23.808   0.139  24.001 
Run Code Online (Sandbox Code Playgroud)

有没有办法让它更快?谢谢你的帮助.

r

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

标签 统计

r ×10

atomic ×1

cumsum ×1

data-structures ×1

dplyr ×1

forecasting ×1

function ×1

na ×1

stringr ×1

typeof ×1

vector ×1

which ×1