亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何制作數據框列表?

如何制作數據框列表?

當年話下 2019-05-22 13:31:42
如何制作數據框列表?如何制作數據框列表以及如何從列表中訪問每個數據框?例如,如何將這些數據框放在列表中?d1 <- data.frame(y1 = c(1, 2, 3),                 y2 = c(4, 5, 6))d2 <- data.frame(y1 = c(3, 2, 1),                 y2 = c(6, 5, 4))
查看完整描述

4 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

這與您的問題無關,但您想要使用=而不是<-在函數調用中。如果您使用<-,您將最終創建變量,y1并y2在您正在使用的任何環境中:


d1 <- data.frame(y1 <- c(1, 2, 3), y2 <- c(4, 5, 6))

y1

# [1] 1 2 3

y2

# [1] 4 5 6

這不會產生在數據框中創建列名的看似期望的效果:


d1

#   y1....c.1..2..3. y2....c.4..5..6.

# 1                1                4

# 2                2                5

# 3                3                6

該=運營商,在另一方面,將您的向量與參數相關聯data.frame。


至于您的問題,制作數據框列表很容易:


d1 <- data.frame(y1 = c(1, 2, 3), y2 = c(4, 5, 6))

d2 <- data.frame(y1 = c(3, 2, 1), y2 = c(6, 5, 4))

my.list <- list(d1, d2)

您可以像訪問任何其他列表元素一樣訪問數據框:


my.list[[1]]

#   y1 y2

# 1  1  4

# 2  2  5

# 3  3  6


查看完整回答
反對 回復 2019-05-22
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

您也可以訪問特定的列和值在每個列表元素與  [和[[。這里有幾個例子。首先,我們只能訪問列表中每個數據框的第一列lapply(ldf, "[", 1),其中1表示列號。


ldf <- list(d1 = d1, d2 = d2)  ## create a named list of your data frames

lapply(ldf, "[", 1)

# $d1

#   y1

# 1  1

# 2  2

# 3  3

#

# $d2

#   y1

# 1  3

# 2  2

# 3  1

同樣,我們可以訪問第二列中的第一個值


lapply(ldf, "[", 1, 2)

# $d1

# [1] 4

# $d2

# [1] 6

然后我們也可以直接訪問列值,作為向量,用 [[


lapply(ldf, "[[", 1)

# $d1

# [1] 1 2 3

#

# $d2

# [1] 3 2 1


查看完整回答
反對 回復 2019-05-22
?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

如果您有大量按順序命名的數據框,則可以創建所需數據框子集的列表,如下所示:


d1 <- data.frame(y1=c(1,2,3), y2=c(4,5,6))

d2 <- data.frame(y1=c(3,2,1), y2=c(6,5,4))

d3 <- data.frame(y1=c(6,5,4), y2=c(3,2,1))

d4 <- data.frame(y1=c(9,9,9), y2=c(8,8,8))


my.list <- list(d1, d2, d3, d4)

my.list


my.list2 <- lapply(paste('d', seq(2,4,1), sep=''), get)

my.list2

where my.list2返回包含第2,第3和第4個數據幀的列表。


[[1]]

  y1 y2

1  3  6

2  2  5

3  1  4


[[2]]

  y1 y2

1  6  3

2  5  2

3  4  1


[[3]]

  y1 y2

1  9  8

2  9  8

3  9  8

但請注意,上面列表中的數據框不再被命名。如果要創建包含數據框子集的列表并希望保留其名稱,可以嘗試以下操作:


list.function <-  function() { 


     d1 <- data.frame(y1=c(1,2,3), y2=c(4,5,6))

     d2 <- data.frame(y1=c(3,2,1), y2=c(6,5,4))

     d3 <- data.frame(y1=c(6,5,4), y2=c(3,2,1))

     d4 <- data.frame(y1=c(9,9,9), y2=c(8,8,8))


     sapply(paste('d', seq(2,4,1), sep=''), get, environment(), simplify = FALSE) 


my.list3 <- list.function()

my.list3

返回:


> my.list3

$d2

  y1 y2

1  3  6

2  2  5

3  1  4


$d3

  y1 y2

1  6  3

2  5  2

3  4  1


$d4

  y1 y2

1  9  8

2  9  8

3  9  8


> str(my.list3)

List of 3

 $ d2:'data.frame':     3 obs. of  2 variables:

  ..$ y1: num [1:3] 3 2 1

  ..$ y2: num [1:3] 6 5 4

 $ d3:'data.frame':     3 obs. of  2 variables:

  ..$ y1: num [1:3] 6 5 4

  ..$ y2: num [1:3] 3 2 1

 $ d4:'data.frame':     3 obs. of  2 variables:

  ..$ y1: num [1:3] 9 9 9

  ..$ y2: num [1:3] 8 8 8


> my.list3[[1]]

  y1 y2

1  3  6

2  2  5

3  1  4


> my.list3$d4

  y1 y2

1  9  8

2  9  8

3  9  8


查看完整回答
反對 回復 2019-05-22
  • 4 回答
  • 0 關注
  • 819 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號