【发布时间】:2013-04-24 13:53:38
【问题描述】:
我是编写函数的新手,我不确定从哪里开始。下面是此示例中名为 m1 的数据框的子集。我想编写一个函数来遍历数据集并按数字提取长度和深度信息。例如,如果它遇到数字 1,它会获取长度和深度并将它们插入到新数据帧或向量的第一行中。如果数字等于 2,它会执行相同的操作,依此类推。
length number depth
[1,] 109 1 10
[2,] 109 1 10
[3,] 109 1 10
[4,] 109 1 10
[5,] 109 1 10
[6,] 109 1 10
[7,] 109 1 10
[8,] 109 1 10
[9,] 109 1 10
[10,] 109 1 10
[11,] 109 1 10
[12,] 109 1 10
[13,] 107 2 10
[14,] 107 2 10
[15,] 107 2 10
[16,] 107 2 10
[17,] 107 2 10
[18,] 107 2 10
[19,] 107 2 10
[20,] 107 2 10
如果数字等于 1,则尝试编写一个函数来获得上述输出。
length.fun=function(x)
{
lengths=numeric()
depth=numeric()
if (x[2]==1)
{
lengths=x[1]
depth=x[3]
}
return(cbind(depth,lengths))
}
length.fun(m1)
但是,我得到的输出是这样的:
length.fun(m1)
depth lengths
非常感谢任何帮助。 谢谢
【问题讨论】:
-
它看起来不像 data.frame。
class(m1)的输出是什么? -
你的目标是什么?一个
data.frame,有两行,一行用于depth,一行用于lengths。或多行,number中的每个唯一元素一个。或者有多行,number中的每个唯一元素两个,lengths一个,depth一个?请详细一点。 -
user1997414,据我了解,您希望为每个数字值创建单独的数据框(或矩阵)。这是真的。如果这是真的,也许您可以提供一些背景信息来说明您为什么要这样做?
-
我的目标是拥有一个由@PaulHiemstra 建议的包含两列的数据框,深度和长度。每个数字在此数据框中应该只有一行。
10 109、10 107等 -
每个数字应该只有一行是什么意思?鉴于你上面的例子,你能告诉我们输出应该是什么吗?这将使找到合适的解决方案变得更加容易。
标签: r function user-defined-functions