【发布时间】:2015-02-02 16:47:08
【问题描述】:
我有一个包含五列数据的数据框,我想找到 1 到 20 之间的数字所在的位置(例如) 对于我使用过的单个实例(我在堆栈溢出中发现的东西)
Filter( function(data) length(data)>1, split(data$No., data$N1))$`1`
首先,我尝试让函数在指定的 N1 列中查找 1:20。 我试过了:
data.occurence = NULL
for (i in min(data$N1):max(data$N1) ) {
i = i
data.occurence[i] = Filter( function(data) length(data)>1, split(data$No., data$N1))$`i`
data.occurence[i]
}
这没有给我任何东西。我知道“for”部分“有效”——我希望在 i = 1:20 时获得 data.occurence[1] 以及值所在位置的 ID,依此类推。 我还希望该函数能够遍历五列中的每一列,每次都重复相同的搜索 示例数据:
No. dat N1 N2 N3 N4 N5 N6 BN
1 1994 2015-01-31 7 10 16 33 39 44 15
2 1993 2015-01-28 3 4 17 24 30 34 36
3 1992 2015-01-24 4 8 19 35 44 49 17
4 1991 2015-01-21 1 6 32 34 37 45 26
5 1990 2015-01-17 29 37 42 46 47 49 4
6 1989 2015-01-14 17 20 28 29 33 36 23
7 1988 2015-01-10 13 14 16 24 41 43 39
8 1987 2015-01-07 4 5 10 12 20 23 24
运行:
Filter( function(data) length(data)>1, split(data$No., data$N1))$`4`
给出 N1 列中包含 4 的行 id 的结果:
[1] 1992 1987 1977 1961 1960 1957
【问题讨论】:
-
请展示一些示例数据和预期输出
-
如果你给一个对象赋值为NULL,你就是在擦除它。