相关疑难解决方法(0)

将相同的列名应用于多个小标题

我想使用该names函数将相同的列名应用于多个数据帧,所有这些数据帧都具有相同的列数。我当然可以通过调用每个数据帧来以错误的方式执行此操作names,但我想正确执行此操作。这是设置:

library(tidyverse)

df1 <- tibble(1,2,3,4,5)
df2 <- tibble(6,7,8,9,10)
df3 <- tibble(11,12,13,14,15)
df4 <- tibble(16,17,18,19,20)

column_names <- c("Alpha","Bravo","Charlie","Delta","Echo")
tibbles_list <- (c("df1","df2","df3","df4"))
Run Code Online (Sandbox Code Playgroud)

错误的方式当然是:

names(df1) <- column_names
names(df2) <- column_names
names(df3) <- column_names
names(df4) <- column_names
Run Code Online (Sandbox Code Playgroud)

我想以某种方式使用tibbles_list(通过as.namerlang::syms类似)中的数据帧列表应用于column_names一行代码中的所有数据帧,也许使用某些种类的purrr'smapapply基 R中的函数之一,但我完全不知如何是好。

r purrr

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

使用rbind()将多个数据帧组合成lapply()中的一个更大的data.frame

我正在使用R-Studio 0.99.491和R版本3.2.3(2015-12-10).我是R的相对新手,我会感激一些帮助.我正在做一个项目,我正在尝试使用旧媒体服务器上的服务器日志来识别服务器中的哪些文件夹/文件仍然被访问,哪些不是,因此我的团队知道要迁移哪些文件.每个日志是24小时,我有大约一年的日志,所以理论上,我应该能够看到过去一年的所有访问.

我理想的输出是获得一个树结构或绘图,它将显示我们服务器上正在使用的文件夹.我已经想出如何将一个日志(一天)读入R作为data.frame,然后使用R中的data.tree包将其转换为树.现在,我想逐步遍历目录中的所有文件,并在创建树之前将它们添加到原始data.frame中.这是我目前的代码:

#Create the list of log files in the folder
files <- list.files(pattern = "*.log", full.names = TRUE, recursive = FALSE)
#Create a new data.frame to hold the aggregated log data
uridata <- data.frame()
#My function to go through each file, one by one, and add it to the 'uridata' df, above
lapply(files, function(x){
    uriraw <- read.table(x, skip = 3, header = TRUE, stringsAsFactors = FALSE)
    #print(nrow(uriraw)
    uridata <- rbind(uridata, uriraw)
    #print(nrow(uridata))
})
Run Code Online (Sandbox Code Playgroud)

问题在于,无论我尝试什么,lapply循环中的'uridata'的值似乎都不会保存/传递到lapply循环之外,但每次循环运行时都会被覆盖.因此,我只获取最后一个'uriraw'文件的内容,而不是获取一个大数据框架.(这就是为什么在循环中有这两个注释的打印命令;我每次循环运行时都在测试数据帧中有多少行.)

谁能澄清我做错了什么?同样,我想在最后组合一个大数据框,它将文件夹中每个(当前七个)日志文件的内容组合在一起.

r lapply dataframe rbind read.table

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

用于创建多个数据框和赋值的 for 循环

我想创建多个数据框并根据年份分配它们。我看过其他帖子,但我无法为我的案例复制它。例如,

a <- c(1,2,3,4)
b <- c('kk','km','ll','k3')
time <- (2001,2001,2002,2003)
df <- data.frame(a,b,time)
myvalues <- c(2001,2002,2003)
for (i in 1:3) 
{ y[[i]]<- df[df$time=myvalues[[i]],}
Run Code Online (Sandbox Code Playgroud)

我想为 2001、2002 和 2003 年创建三个数据框 y1、y2、y3。任何建议如何使用 for 循环?

for-loop r dplyr

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

从对象名称向量中列出许多对象

TL;DR:我需要的是list().

我正在尝试创建一个对象列表。我不知道会有多少对象或它们会被称为什么,而且可能有很多。所以我不能只是手工列出一个清单。

但是,我知道当需要制作列表时,所有对象都将存在于我的环境中,并且我知道我将有一个包含所有对象名称的字符向量。

(这些是我试图避免变得更大的可怕的三层 for 循环的输出。我可以创建一个空列表,然后在循环创建对象时为其分配对象,但我不想这样做.)

我已经搜索过 Google 和 Stack Overflow,但找不到好的解决方案。在我看来,我需要的是一个向量化版本list():某种东西,它将采用对象名称的向量,找到所有这些对象并将它们放入一个列表中。

list(obj1, obj2, obj3) # Not this. I don't want to name each element individually.

objectsVector <- c("obj1", "obj2", "obj3")
list_vectorised(elements = objectsVector) # I want this instead. 

namesVector <- c("anObject", "anotherObject", "yetAnotherObject")
list_vectorised(elements = objectsVector, names  = namesVector) # Or better still, this. 
Run Code Online (Sandbox Code Playgroud)

r

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

如何有效地创建一系列数据帧上方的表格?

更新使用整个站点中发现的不同解决方案:

我仍然无法使用stack和ldply函数获得所需的输出

所需的输出如下所示:

  Dataset              Samples
1     WGS        nrow(WGS.ped)
2     WES    nrow(WES.ped.exp)
3    MIPS   nrow(MIPS.ped.exp)
Run Code Online (Sandbox Code Playgroud)

1)ldply:如何给列V1和列分配名称.id

ldply(list(WGS=WGS.ped, WES=WES.ped.exp, MIPS=mips.ped.exp), 
      function(l)(Samples=nrow(l)))

   .id    V1
1  WGS  3908
2  WES 26367
3 MIPS 14193
Run Code Online (Sandbox Code Playgroud)

2)ldply:如何给列V1和列分配名称.id

ldply(list(WGS=WGS.ped, WES=WES.ped.exp, MIPS=mips.ped.exp), nrow)

   .id    V1
1  WGS  3908
2  WES 26367
3 MIPS 14193
Run Code Online (Sandbox Code Playgroud)

3)lapply %>% as.data.frame:将数据帧名称作为列而不是第一列' Dataset'返回。

lapply(list(WGS=WGS.ped, WES=WES.ped.exp, MIPS=mips.ped.exp), nrow) %>% 
  as.data.frame

   WGS   WES  MIPS
1 …
Run Code Online (Sandbox Code Playgroud)

stack r lapply dataframe dplyr

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

如何在R中创建多个空矩阵?

我想创建18名为mat10ci, mat15ci,....,的相同维度的空矩阵mat95ci。我试过下面的代码

for( s in seq(10,95,by=5)){
  paste0("mat",s,"ci")=array(NA, dim = c(10, 20))
}
Run Code Online (Sandbox Code Playgroud)

我有这个错误

target of assignment expands to non-language object
Run Code Online (Sandbox Code Playgroud)

帮助表示赞赏。

null for-loop r matrix

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

R将字符串转换为变量

我正在使用quantmodR从yahoo finance中提取历史数据.

要使用该包,我创建一个代码清单,如下所示:

symbols <- c("MSFT", "ORCL", "AAPL", "FB")
Run Code Online (Sandbox Code Playgroud)

为了获取历史数据,我调用了quantlib方法getSymbols:

try(getSymbols(sym, src="yahoo"))
Run Code Online (Sandbox Code Playgroud)

这在我的环境变量叫MSFT,ORCL,APPLFB.

要计算MSFT和ORCL之间的相关性,我可以使用收盘价

cor(Cl(MSFT), Cl(ORCL))
Run Code Online (Sandbox Code Playgroud)

要得到:

           ORCL.Close
MSFT.Close  0.6597159
Run Code Online (Sandbox Code Playgroud)

我怎样才能使这个通用,以便我可以拉出20个符号并运行它们之间的相关性?

我不知道如何引用给定字符串的变量.即我有字符串"MFST",我如何引用变量MSFT

我有字符串"MFST"和"ORCL"我怎么用它来写 cor(Cl(MSFT), Cl(ORCL))

r quantmod

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

将环境中的对象列表及其名称保存在 R 中

我遇到了 R 的问题。在我的大物种表的一系列子集之后,我根据性别、收集时刻、家庭等创建了一定数量的数据框...我将它们保存为数据集/中的 .csv 文件csv/ 目录,正如您可以想象的那样,它会变得非常混乱。所以我想将这些数据帧保存为一个列表,将其保存为 r 对象后,当我在单独的 RMarkdown 文件中进行分析时,我可以将其加载为唯一的对象。这将避免加载 .csv 文件时出现错误,也避免我疯狂地在 /csv 目录中搜索和加载正确的文件。

所以。删除无用的对象后,我遇到了这样的情况(有更多的数据帧)。

my_list <- replicate(n = 10, expr = {data.frame(x = rnorm(50), y = rnorm(50))}, simplify = F)

names(my_list) <- c(paste("ciao", c(1:10)))
list2env(my_list ,.GlobalEnv)
Run Code Online (Sandbox Code Playgroud)

显然,数据帧的名称不仅仅是 ciao 1、2 等......而且彼此不同。现在我想“回来”列出每个对象并用其名称命名,例如

my_list2 <- list()
for (i in seq_along(ls())) {
  my_data[["The name of i-th object"]] <- list="i-th object"
}
Run Code Online (Sandbox Code Playgroud)

在这里我遇到了问题。如何根据从 seq_along 获得的位置,使用 ls() 调用第 i 个对象的名称?我在帮助页面、本网站和其他网站中进行了搜索,但一无所获。

非常感谢。西蒙娜.

r list dataframe

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

如何从 SQLite 数据库读取所有表并将其存储为 R 中的数据集/变量?

我有一个包含许多表的大型 SQLite 数据库。我已使用 RSQLite 和 DBI 包在 RStudio 中建立了与此数据库的连接。(我已命名该数据库db

library(RSQLite)
library(DBI)
Run Code Online (Sandbox Code Playgroud)

目前我必须读入所有表并手动为它们分配名称。例如:

country <- dbReadTable(db, "country")
date <- dbReadTable(db, "date")
#...and so on
Run Code Online (Sandbox Code Playgroud)

您会发现,如果您有很多表,这可能是一个非常耗时的过程。

所以我想知道是否可以创建一个新函数或使用现有函数(例如lapply()?)来更有效地完成此操作并从本质上加快此过程?

非常感谢任何建议:)

sql database sqlite r dataset

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

在 R 中,如何从一系列具有索引名称的变量快速创建数据框?

我想从一系列我命名为 的向量创建一个数据框d*i*。我尝试使用粘贴函数来执行此操作,但它只是构建了一个包含值为“d1、d2、d3...”的单列的数据框,我想将与这些变量名称关联的向量放入其中。我该怎么做这?

d1 <- c(6.3,8.3,6.6,0,8.4,8.6)
d2 <- c(8.2,8.7,8.6,7.9,7.1,7.6)
d3 <- c(7.1,6.4,6.6,8,7.5,10.3)
d4 <- c(8,7.7,7.3,0,9.4,6.4)
d5 <- c(8.5,6.8,0,0,7.3,9.7)
d6 <- c(5.9,7.5,6.5,0,9.8,7.8)
d7 <- c(7.6,5.3,6.7,0,6.6,7.4)
d8 <- c(9.5,5.6,8.8,0,8.6,8.3)
d9 <- c(8.5,7.4,0,0,9.2,8.6)
d10 <- c(7.8,6.9,8.6,6.7,6.8,6.1)

mydata <- data.frame(paste("d",1:10))
Run Code Online (Sandbox Code Playgroud)

r variable-assignment dataframe

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

用置信区间绘制回归系数

假设我有2个数据框,一个用于2015年,一个用于2016年。我想为每个数据框运行回归,并为每个回归绘制系数之一及其各自的置信区间。例如:

set.seed(1020022316)
library(dplyr)
library(stargazer)

df16 <- data.frame(
  x1 = rnorm(1000, 0, 2),
  t = sample(c(0, 1), 1000, T),
  e = rnorm(1000, 0, 10)
) %>% mutate(y = 0.5 * x1 + 2 * t + e) %>%
  select(-e)

df15 <- data.frame(
  x1 = rnorm(1000, 0, 2),
  t = sample(c(0, 1), 1000, T),
  e = rnorm(1000, 0, 10)
) %>% mutate(y = 0.75 * x1 + 2.5 * t + e) %>%
  select(-e)

lm16 <- lm(y ~ x1 + t, data …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

重复在R中分配数据帧

我是R和stackoverflow的新手,所以这可能有一个非常简单的解决方案.

我有来自20个不同主题的一组数据.在将来,我将不得不对这些数据执行许多不同的操作,并且必须对所有单个集重复此操作.分别分析它们并重新组合它们.我的问题是如何自动化这个过程: P4 <- read.delim("P4Rtest.txt") P7 <- read.delim("P7Rtest.txt") P13 <- read.delim("P13Rtest.txt") 等等等.

我已经尝试使用for循环进行循环,但是每次都要创建一个具有唯一名称的新data.frame.

谢谢您的帮助

loops r object

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

如何在不使用循环的情况下在R中创建大型列表

我在R中有大约500个具有两列和不同行数(从10到30)的数据帧.我还有一个包含数据帧名称的字符向量.我现在希望将所有这些数据帧捆绑到一个列表中,这样我就可以使用数据框名称来引用这些列表元素.我正在考虑使用循环来遍历数据帧并在每个步骤中将它们添加到列表中但我无法将其拉出来.

r list

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