【发布时间】:2019-01-04 19:51:30
【问题描述】:
我正在努力处理具有结构的列表(原始数据):
我需要的是具有结构的列表列表(转换后的数据):
即 对于我的子列表中的每个不同的行(名称),我需要一个新的子列表。该子列表将具有该行的名称,row(names) 将是原始子列表的名称,数据将由原始子列表中的 a 和 e 列组成。
我真的知道我应该发布一些代码,我会试试这个
original<-list(`a1` = structure(c("", "Culturas", "", "Algodão", "Soja", "Soja", "Modalidade de Emprego", "", "(Aplicação)", "Pós-emergência", "Dessecante", "Pós-emergência", "", "LMR (mg/kg)", "", "0,04", "4,0", "4,0", "Intervalo de", "", "Segurança", "(2)", "07 dias", "(1)"), .Dim = c(6L, 4L)),`a2` = structure(c("Culturas", "Cebola", "Feijão", "Soja", "Trigo", "Modalidade de Emprego (Aplicação)", "Pós-emergência", "Pós-emergência", "Pós-emergência", "Pós-emergência", "LMR (mg/kg)", "0,02", "0,02", "0,02", "0,02", "Intervalo de Segurança", "60 dias", "60 dias", "60 dias", "70 dias"), .Dim = 5:4))
original
$a1 [,1] [,2] [,3] [,4] [1,] "" "Modalidade de Emprego" "" "Intervalo de" [2,] "Culturas" "" "LMR (mg/kg)" "" [3,] "" "(Aplicação)" "" "Segurança" [4,] "Algodão" "Pós-emergência" "0,04" "(2)" [5,] "Soja" "Dessecante" "4,0" "07 dias" [6,] "Soja" "Pós-emergência" "4,0" "(1)" $a2 [,1] [,2] [,3] [,4] [1,] "Culturas" "Modalidade de Emprego (Aplicação)" "LMR (mg/kg)" "Intervalo de Segurança" [2,] "Cebola" "Pós-emergência" "0,02" "60 dias" [3,] "Feijão" "Pós-emergência" "0,02" "60 dias" [4,] "Soja" "Pós-emergência" "0,02" "60 dias" [5,] "Trigo" "Pós-emergência" "0,02" "70 dias"
结果
result<-list(`soja` = structure(c("a1", "a1","a2", "4,0", "4,0", "0,02"), .Dim = 3:2, .Dimnames = list( NULL, c("ATIVO", "LMR (mg/kg)"))))
result
$soja ATIVO LMR (mg/kg) [1,] "a1" "4,0" [2,] "a1" "4,0" [3,] "a2" "0,02"
【问题讨论】:
-
从例子中不清楚,你想要什么。
result是预期的输出吗?图片和示例在结构上有些差异 -
似乎您在读取数据时遇到问题 -
original是矩阵列表,其中第一行看起来实际上应该是列名,而字符串条目(如"0,02")可能应该是数字0.02。我建议在尝试转换数据之前先修复您的数据读取过程。 How to make a list of data frames 是很好的背景阅读,还可以查看?read.csv2或dec参数,您使用的任何读取函数将逗号读取为小数。 -
@akrun 完全正确!
result只是预期的输出。我的图形输入数据和文字输入数据确实有一些差异,那是因为我的数据集实际上很大,我只是试图给出一个可口的例子。 -
@Gregor 感谢您的反馈。我同意你的观点,我的输入数据有一些问题。所说的行名实际上不是行名,因为它是一个矩阵,所以它们是 col1,因此我需要重新排列我的数据,为 col1 中的每个唯一字符串创建一个新矩阵。但是,所有数据都是文本的,因此不需要逗号问题。
-
我引用的是列名,而不是行名。在您的图片中,列名很重要。在您的示例输入数据中,没有列名。因此,使用该输入,第一步将是在流程中这个尴尬的时刻烦人地创建列名,但在现实生活中,第一步应该是修复上游的输入流程,以便列名是正确的。一旦列名正确,作为这个问题重点的转换就会容易得多。因此,我要求您将输入问题与转换问题分开。
标签: r list subset reshape sublist