R中的行中的字符串

时间:2014-06-18 07:34:03

标签: r

我有一个文件,我在R中创建了一个接受字符串的函数 110110110110110。

现在,具有1000行和每行的输入文件在后续列中具有这些数字。

示例:

V1  V2  V3  V4  V5  V6  V7  V8  V9  V10  V11  V12  V13  V14  V15

1   1   1   0    1   1   0   1   1   0    1    1    0    1     1 

2   0   1   0    1   0   1   0   1   0    1    0    1    0     1

3

4

5 

6
像这样,我有数千行。列V1是行号,V2-V28包含1或0.现在,我想将函数应用于输入文件的每一行,使得V2-V28列中的数字形成输入字符串。我知道如果我在文件中的行中有简单的字符串,但是如何使用列来完成它?

感谢。

编辑:我写的函数接受一个字符串作为输入,例如" 110110110"。但是,我所拥有的是每行中不同列(V2-V28)中的1和0的序列。

2 个答案:

答案 0 :(得分:0)

喜欢这个吗?

df    <- data.frame(V1 = c(1,0,0,0,1), V2= c(0,1,0,1,0), V3=c(0,0,0,0,0), V4=c(1,1,1,1,1))
input <- do.call(cbind, df[,2:ncol(df)]) 

现在,您可以对行使用带边距1的应用,将其传递给指定的函数:

apply(input, 1, do.something.with.vector)

编辑:要转换为字符串并删除逗号等,请像这样使用

apply(input, 1, function(x) print(gsub(", ","",toString(x))))

您可以将“print”兑换为“do.something.with.vector”功能。

答案 1 :(得分:0)

  

我想要的是V2-V28列中的数字应该在每一行中形成一个字符串,我可以进一步传递给我的函数。

您可以使用带参数collapse =“”的函数paste。例如,给定样本矩阵“m”:

m <- matrix(1:16, nrow = 4)
m
     [,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16

您可以按行为所需列应用“粘贴”功能(例如第二列到第四列):

apply(m[,2:4], 1, paste, collapse = "")
[1] "5913"  "61014" "71115" "81216"