将多列传递给R中的函数

时间:2014-06-18 18:15:20

标签: r

所以,我有一个这样的文件(约500行)。

        V1    V2  1 2 3 4 5 6 7 8 9 10
2       171   192 1 1 0 1 0 0 0 0 0  0
31       72   469 1 0 0 1 1 0 0 0 0  0
32       72   327 1 0 0 1 1 0 1 0 0  0
34       66   443 1 0 1 1 0 0 0 0 0  1
50      747   353 1 1 0 1 0 0 0 0 0  0
53      476   443 1 1 0 0 0 0 1 0 0  0
57     1259  1260 1 0 0 0 0 0 0 1 1  0
66      575   571 1 1 1 1 1 0 0 1 0  0
84      407  1645 1 0 1 1 0 1 0 0 0  0
87      120  1067 1 1 1 0 0 0 0 0 0  0
90      871   280 1 1 0 0 1 0 0 0 0  0
95     1862  1656 1 0 1 1 0 0 0 0 0  0
......................................

我有一个接受字符串的功能,例如" 110100101010"。现在,我想要做的是将每行的列[1-10]中的数字传递给该函数。

示例:函数将首先应用于第一行,列[1-10]。然后它将应用于第二行,列[1-10] .......直到最后一行,列[1-10]。我的意思是,对于每一行,列[1-10]中的数字将被视为函数接受的字符串。

如何在R?中编写?

3 个答案:

答案 0 :(得分:1)

可以(按照你在评论中的建议)创建cols 3:12的附加列,然后在其上应用你的功能

如果您的数据名为data并且函数名为f,那么

data$pattern <- apply(data[, 3:12], 1, paste, collapse = "")
sapply(data$pattern, f)

答案 1 :(得分:0)

因此,如果让df成为您data.framecol的{​​{1}}和data.frame您的职能部分,那么您可以这样做:

foo

要以编程方式执行此操作,您可以执行此操作:

foo(cat(df$col, sep=""))

答案 2 :(得分:0)

怎么样......

bunnies <- as.vector(t(mydata[3:12]))
paste(bunnies, collapse = '')

我用它来解决类似的问题而且效果很好。我假设您的函数可以一次获取所有行值,如果没有,那么您可以编写一个函数来逐个遍历每一行并运行此操作。