转换向量子集中的数字以匹配字符串行

时间:2014-04-22 06:19:16

标签: r vector dataframe sublist

假设我有一个包含整数子列表的向量列表。

> s #List of 2 integers

> [[1]]
> [1]    23 900 1800 42 87

> [[2]]
> [1]    54 8777 13 1 2 3

整数对应于包含字符的数据框中的行号,以“”分隔。

> origninaldf

>[1,] "Apple"
>[2,] "Apples"
>[3,] "123_Street"

我想将列表转换为新的数据帧(newdf),保留根据dataframe(orignaldf)转换为字符的子列表编号和行号。

> newdf
1   Zoo  ...
2   ... ... ... Apple Apples 123_Street

谢谢! (在R中编码仍然很新)

1 个答案:

答案 0 :(得分:0)

也许:

lapply(s,  function(i) originaldf[ i[ i %in% 1:length(originaldf) ] ] )

不清楚您的意思"保留子列表编号",因为操作很少具有破坏性,并且数字不会出现在您想要的结果中。您还会显示具有不同数量元素的输出,这些元素通常需要列出或文本文件。进一步混淆是由于原始数据的输出引起的。它被显示为好像它不是数据帧而是矩阵。

s <- list(c(23, 900, 1800, 42, 87), c(54, 8777, 13, 1, 2, 3))
origninaldf <- 

structure(list(nam = structure(c(2L, 3L, 1L), .Label = c("123_Street", 
"Apple", "Apples"), class = "factor")), .Names = "nam", row.names = c(NA, 
-3L), class = "data.frame")

> lapply(s,  function(i) origninaldf[ i[ i %in% 1:length(origninaldf)] ] )
[[1]]
data frame with 0 columns and 3 rows

[[2]]
         nam
1      Apple
2     Apples
3 123_Street