小编Sav*_*SUS的帖子

填充列表的元素而不循环

我试图不使用for循环将值分配给列表的元素.

在这里,我创建一个空列表,给它一个20的长度并命名20个元素中的每一个.

mylist <- list()
length(mylist) <- 20
names(mylist) <- paste0("element", 1:20, sep = "")
Run Code Online (Sandbox Code Playgroud)

我希望每个元素都mylist包含从随机生成的数字池中提取的样本,表示为x:

x <- runif(100, 0, 1)
Run Code Online (Sandbox Code Playgroud)

我尝试了以下代码,但没有达到预期的结果:

mylist[[]] <- sample(x = x, size = 20, replace = TRUE) # Gives an error
mylist[[1:length(mylist)]] <- sample(x = x, size = 20, replace = TRUE) # Does not give the desired result
mylist[1:length(mylist)] <- sample(x = x, size = 20, replace = TRUE) # Gives the same undesired result as the …
Run Code Online (Sandbox Code Playgroud)

for-loop r list vectorization

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

R中没有更多的循环

我得出结论,R专家不太喜欢循环; 但是,作为一名前java程序员,这个事实对我来说有点苛刻.

我要动态地创建5个变量:x1,x2,x3,x4x5并指定他们中的每一个随机值.

> i = 1
> 
> while(i <= 5)
 {
   assign(paste("x", i, sep = ""), rnorm(1))
   i = i + 1       
 }
> x1
[1] 0.3853609
> x2
[1] 1.626055
> x3
[1] -1.043699
> x4
[1] 0.3449921
> x5
[1] -0.9768416
Run Code Online (Sandbox Code Playgroud)

好吧,这使用while循环,我正在寻找R方式这样做.我试过了:

assign(paste("x", 1:5, sep=""), rnorm(1)
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误.我究竟做错了什么?

loops r

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

从列表值创建数据框

我有以下列表:

peter <- data.frame(year = 1:5, a = rnorm(5), b = rnorm(5))
john <- data.frame(year = 1:5, a = rnorm(5), b = rnorm(5))

myList <- list(peter, john)
names(myList) <- c("peter", "john")

myList

    $peter
    year           a         b
    1      1.01464245 0.2490931
    2      1.38054309 0.8396630
    3     -0.84094830 0.2410526
    4     -0.05567379 0.6369121
    5     -0.66412862 1.5739672

    $john
    year          a          b
    1      0.3060996 -0.4256702
    2      0.7167710 -0.6828029
    3     -0.6896138  0.6577422
    4     -1.7647412 -0.5651756
    5      0.3065734 -0.4860141
Run Code Online (Sandbox Code Playgroud)

如何转换myList为以下数据框:

   year student           a          b
1     1   peter …
Run Code Online (Sandbox Code Playgroud)

r list dataframe

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

使用 cbind 并命名时间序列矩阵

当该cbind函数用于组合 2 个或更多矩阵时,生成的矩阵将继承列名称。下面是一个简单的例子来说明这一事实。我有两个 (2x2) 矩阵m1m2. 的列m1ab;的列m2cd。如果 Icbind m1m2,我将获得一个包含 4 列的矩阵,名称为:ab和。cd

> m1 <- matrix(1:10, ncol = 2)
> colnames(m1) <- letters[1:2]
> m2 <- matrix(11:20, ncol = 2)
> colnames(m2) <- letters[3:4]
> 
> M <- cbind(m1, m2)
> M
     a  b  c  d
[1,] 1  6 11 16
[2,] 2  7 …
Run Code Online (Sandbox Code Playgroud)

r cbind

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

带有"["的嵌套子集

我最近发现,在用"["对一个对象(即一个数据帧)进行子集化之后,生成的对象可能是在同一行代码上带有"["的子集(我应该早点实现它!).这是一个例子:

# Create a data frame
df1 <- as.data.frame(matrix(1:9, nrow = 3))

# Take a look at the data frame
df1
  V1 V2 V3
1  1  4  7
2  2  5  8
3  3  6  9

# If I want the value which is on the 3rd row and 2nd column
df1[3,2]
[1] 6

# But I could also
df1[,2][3]
[1] 6
Run Code Online (Sandbox Code Playgroud)

关于第二种选择的几句话.df[,2]返回一个原子向量,然后是子集df[,2][3].

以下数据框架将有助于说明我的问题.它是一个简单的数据框,包含26名学生的姓名,他们各自的部门以及数值.添加种子数以获得再现性.

set.seed(123)
df2 <- data.frame(name = letters, dept = sample(c("econ", "stat", "math"), 26, …
Run Code Online (Sandbox Code Playgroud)

r subset

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

使用列表中的值

我有一个包含3个向量的列表.

mylist <- list( a = c(1,2),
                b = c(3,4),
                c = c(5,6) )
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法,例如,使用sum()函数对三个对象的第一个值执行计算?

我尝试过很多东西:

sum(mylist[c(a, b, c)][1])
Run Code Online (Sandbox Code Playgroud)

这行代码不起作用,但它可以让我深入了解我想要做的事情.

谢谢你的帮助.

r

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

带有嵌套模块的闪亮输出元素未在 bs4Dash 中显示

编辑:该bs4Dash软件包的作者 David Granjon 最近对下面引用的 Github 问题中提出的问题提供了答案,并将其关闭。

  1. 我的问题很可能与github repo中的这个问题bs4Dash有关,但那里没有提供答案。
  2. 完整的可重现代码位于问题的末尾

我的目标

我正在制作一个模块化的 Shiny 应用程序,并尝试使用该bs4Dash包来完成它。该应用程序如下所示:

图片1

该应用程序

最终应用程序有几个部分(我只为本示例做了介绍),每个部分至少包含一个bs4TabCard. 上图中的标签卡有一个uiOutput和一个rhandsontableOutput元素,这些元素是在服务器函数中渲染的。请注意,这些都是***Output元素。在图 1的可重现代码中(您可以在问题末尾找到),我不使用任何模块。然而,我的目标是使用多个模块,因为应用程序有可能变得相当大。对于这个简单的示例,我尝试使用两个模块:每个部分(即每个bs4TabItem)一个模块,每个标签卡一个模块。这意味着这两个模块将始终嵌套:tabcard 模块将位于节模块内部。

图2

在应用程序中显示模块

问题

问题是,当我实现模块时,***Output元素不会显示:

图3

模块化应用程序有问题

令人惊讶的是***Input元素被显示了。我制作了第三个模块,其中numericInput仅包含一个并将其放置在标签卡的第二个选项卡中。如下图所示,显示numericInput没有问题:

图4

模块化应用程序可与输入元素配合使用

我做了我的功课

在这个问题中,报告了类似的问题,但没有提供任何解决方案,并且我的挖掘证明不成功。当输出元素被放置在bs4Dash.

可重现的代码

图1的可重现代码

library(shiny)
library(bs4Dash)
library(rhandsontable)

shiny::shinyApp(
  ui = bs4DashPage(
    old_school = FALSE,
    sidebar_min = TRUE,
    sidebar_collapsed = FALSE,
    controlbar_collapsed = FALSE,
    controlbar_overlay …
Run Code Online (Sandbox Code Playgroud)

nested shiny shinymodules bs4dash

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

R:如何在条件下生成序列seq()?

我刚刚发现了R而我正在尝试使用它.

这是我想要实现的目标:

我有一个数字向量x,介于50和100之间,大小为250个观测值.

x = sample(seq(50, 100), 250, repeat = T)
Run Code Online (Sandbox Code Playgroud)

现在,我想生成另一个数字矢量y,介于0和100之间,这与矢量x的大小相同,因此y中的每个元素都小于或等于x中的等价物.

也就是说,如果x [1]是76,例如,生成的最高值y [1]可以达到76.但它绝对可以是低于76的任何其他值.换句话说,更一般地说,我想要矢量y以y [i] <= x [i]的方式生成.

我希望我的要求更清楚.

非常感谢你!

random r vector

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