我不明白之间的差别is.atomic()和is.vector().根据我的理解,is.vector()返回TRUE同类1D数据结构.我相信逻辑,双精度,整数,字符,复合体和原始数据的is.atomic()回报TRUE......但是,不会is.vector()这样吗?所以我想也许差异在于它的尺寸,但在双打的数据框中is.atomic()返回FALSE,这让我更加困惑啊......
另外,原子矢量和法向量之间有什么区别?
谢谢你的澄清!
我首先定义了新变量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.
请提供适当的标题,因为我不知道这是什么问题.
如果我有一个数据集工作,我想对数据进行分组(即通过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) 就像数据帧中的列和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 中反转单词。例如,将“这是我的文本”转换为“我的文本是这个”。我尝试使用 stringr 包中的 word 函数,如下所示,但没有用,只有“”
word("this is my text", -1,1)
[1] ""
Run Code Online (Sandbox Code Playgroud)
任何建议为什么上述方法不起作用或任何其他方式来反转单词?
我有一个如下的数字向量。
V1 <- c(1:3, 7:20, 23,45,55,27:30, 66, 88:89)
Run Code Online (Sandbox Code Playgroud)
如何找到最长的连续序列和位置?在这种情况下,所述靶序列的长度是14与该位置是18
请告知
我的丑是使用which和shift
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
我想根据该 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) 嘿伙计们,经过时间序列的预测过程,我获得了这样的数据框(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) 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)
为什么不重新调整位置向量?
它需要(在我的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)
有没有办法让它更快?谢谢你的帮助.