我有一个名为dataf的数据框
dataf<-data.frame(replicate(10,sample(0:1,10,rep=TRUE)))
我希望将此数据框的每一行都提取为与此函数类似的字符串:
result=data.frame(matrix(NA, ncol=1, nrow=10))
i=0
for(i in 0:9)
{
result[i+1,]=toString(dataf[i+1,])
}
但结果不符合预期:
1, 0, 0, 0, 1, 0, 0, 1, 1, 0
0, 0, 0, 1, 1, 1, 1, 0, 1, 1
1, 1, 0, 0, 0, 0, 0, 0, 1, 0
我想这样:
"1","0","0","0","1","0","0","1","1","0"
"0","0","0","1","1","1","1","0","1","1"
"1","1","0","0","0","0","0","0","1","0"
我已尝试使用dQuote
,\"R\"
,collapse
,sep
...但我无法获得所需内容。
答案 0 :(得分:3)
尝试:capture.output(write.table(lapply(dataf, as.character), row.names=F, col.names=F, sep=","))
[1] "\"0\",\"0\",\"0\",\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\""
[2] "\"1\",\"0\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\",\"1\",\"1\""
[3] "\"0\",\"1\",\"0\",\"0\",\"1\",\"1\",\"0\",\"0\",\"1\",\"1\""
...
编辑以回应Matthew在下面的评论
答案 1 :(得分:2)
这是另一种选择,类似于@ Phil的方法,但提供与@JayBlack相同的输出。
apply(dataf, 1, function(.) paste(dQuote(.), collapse=','))
返回以下字符串向量。
[1] "\"0\",\"0\",\"1\",\"0\",\"1\",\"1\",\"0\",\"0\",\"1\",\"1\""
[2] "\"1\",\"0\",\"1\",\"1\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\""
[3] "\"1\",\"1\",\"0\",\"1\",\"0\",\"0\",\"1\",\"1\",\"1\",\"1\""
.....
答案 2 :(得分:1)
[编辑]
这是一种方式:
d <- apply(dataf, 1, toString)
splitup <- lapply(d, function(x) paste('\"', unlist(strsplit(x, ',')), ',\"', sep=''))
data.frame(do.call(rbind, splitup))
X1 X2 X3 X4 X5 X6 X7 X8 X9
1 "1," " 0," " 0," " 1," " 1," " 0," " 1," " 0," " 1,"
2 "1," " 0," " 1," " 1," " 0," " 1," " 0," " 0," " 0,"
3 "0," " 0," " 1," " 0," " 1," " 0," " 1," " 0," " 0,"
4 "0," " 1," " 1," " 1," " 0," " 0," " 1," " 1," " 1,"
5 "1," " 0," " 1," " 0," " 0," " 1," " 0," " 1," " 1,"
6 "1," " 0," " 1," " 1," " 0," " 0," " 0," " 1," " 0,"
7 "1," " 0," " 1," " 0," " 0," " 1," " 1," " 1," " 1,"
8 "0," " 1," " 0," " 1," " 0," " 1," " 0," " 1," " 1,"
9 "1," " 1," " 1," " 0," " 0," " 1," " 0," " 1," " 0,"
10 "0," " 0," " 0," " 0," " 0," " 1," " 0," " 0," " 1,"
答案 3 :(得分:0)
编辑:不是您指定的输出但可能对其他人有用吗?
<MENSAJEREQ>
<INTEGREQ>
<DETALLE>
<DATOS>
<!--Optional:-->
<!--xs:string-->
<numServicio>?</numServicio>
<!--xs:string-->
<tipNegocio>?</tipNegocio>
<!--xs:int-->
<mtoDeudor>?</mtoDeudor>
</DATOS>
</DETALLE>
</INTEGREQ>
</MENSAJEREQ>
收率:
apply(dataf, 1, paste0, collapse = "")
这是你希望的输出吗?