【发布时间】:2014-03-31 13:44:24
【问题描述】:
我有一个包含 26 个数据框的列表。我正在使用下面的代码来创建一个向量。有没有办法可以使用 for 循环对所有 26 个数据帧应用相同的唯一函数,并在每个数据帧中创建一个包含 26 个数据帧的新列表?每个数据框将根据该数据框创建不同的向量。
(unique(paste(list[[1]]$row, list[[1]]$col, sep=""))
> (unique(paste(list[[1]]$row, list[[1]]$col, sep="")))
[1] "A1" "A2" "A3" "A5" "A6" "A7" "A8" "A9" "A10" "A11" "A12" "B1" "B2" "B3" "B4" "B5" "B6" "B7" "B8" "B9"
[21] "B10" "B11" "B12" "C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9" "C10" "C11" "C12" "D1" "D2" "D3" "D4" "D5"
[41] "D6" "D7" "D8" "D9" "D10" "D11" "D12" "E1" "E2" "E3" "E4" "E5" "E6" "E7" "E8" "E9" "E10" "E11" "E12" "F1"
[61] "F2" "F3" "F4" "F5" "F6" "F7" "F8" "F9" "F10" "F11" "F12" "G1" "G2" "G3" "G4" "G5" "G6" "G7" "G8" "G9"
[81] "G10" "G11" "G12" "H1" "H2" "H3" "H4" "H5" "H6" "H7" "H8" "H9" "H10" "H11" "H12"
所以我想要的结果是......
[[1]]
[1] "A1" "A2" "A3" "A5" "A6" "A7" "A8" "A9" "A10" "A11" "A12" "B1" "B2" "B3" "B4" "B5" "B6" "B7" "B8" "B9"
[21] "B10" "B11" "B12" "C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9" "C10" "C11" "C12" "D1" "D2" "D3" "D4" "D5"
[41] "D6" "D7" "D8" "D9" "D10" "D11" "D12" "E1" "E2" "E3" "E4" "E5" "E6" "E7" "E8" "E9" "E10" "E11" "E12" "F1"
[61] "F2" "F3" "F4" "F5" "F6" "F7" "F8" "F9" "F10" "F11" "F12" "G1" "G2" "G3" "G4" "G5" "G6" "G7" "G8" "G9"
[81] "G10" "G11" "G12" "H1" "H2" "H3" "H4" "H5" "H6" "H7" "H8" "H9" "H10" "H11" "H12"
[[2]]
[1] "A1" "A2" "A3" "A5" "A6" "A7" "A8" "A9" "A10" "A11" "A12" "B1" "B2" "B3" "B4" "B5" "B6" "B7" "B8" "B9"
[21] "B10" "B11" "B12" "C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9" "C10" "C11" "C12" "D1" "D2" "D3" "D4" "D5"
[41] "D6" "D7" "D8" "D9" "D10" "D11" "D12" "E1" "E2" "E3" "E4" "E5" "E6" "E7" "E8" "E9" "E10" "E11" "E12" "F1"
[61] "F2" "F3" "F4" "F5" "F6" "F7" "F8" "F9" "F10" "F11" "F12" "G1" "G2" "G3" "G4" "G5" "G6" "G7" "G8" "G9"
[81] "G10" "G11" "G12" "H1" "H2" "H3" "H4" "H5" "H6" "H7" "H8" "H9" "H10" "H11" "H12"
[[3]]
[1] "E10" "E11" "E12" "F1" "F2" "F3" "F4" "F5" "F6" "F7" "F8" "F9" "F10" "F11" "F12" "G1" "G2" "G3" "G4" "G5"
[21] "G6" "G7" "G8" "G9" "G10" "G11" "G12" "H1" "H2" "H3" "H4" "H5" "H6" "H7" "H8" "H9" "H10" "H11" "H12"
etc etc until [[26]]
澄清
每个数据框包含以下列表包含的任何或所有元素(以下列表有 96 个元素):
list(c(paste0(rep(LETTERS[1:8], each=12), rep(1:12, 8))))
所以我需要一些能够遍历我的 26 个数据框列表并告诉我每个数据框包含的元素的东西。因为某些数据框可能没有全部 96 个元素,所以我展示了 [[3]] 在我想要的结果示例中只有 .. 40 个元素。希望现在更清楚..
【问题讨论】:
-
使用
lapply。它专为此类任务而设计。 -
@Roland 是这样的吗? lapply(list, function(x) unique(paste(list[[i]]$row, list[[i]]$col, sep=""))) 现在它给了我列表的数据框,但是向量它返回的与原始列表的每个数据框都不对应。
-
差不多。
lapply(list, function(x) unique(paste0(x$row, x$col)))
标签: r list for-loop dataframe unique