Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 将长度和字符串数可变的命名字符串列表写入R中的文本文件_List_File_R_Variable Length - Fatal编程技术网

List 将长度和字符串数可变的命名字符串列表写入R中的文本文件

List 将长度和字符串数可变的命名字符串列表写入R中的文本文件,list,file,r,variable-length,List,File,R,Variable Length,我是相对较新的R用户,仍在学习基础知识 我有一个命名列表xx,这些条目如下所示: > xx[100:105] $`15LOX-1` [1] "207328_at" $`16.1` [1] "215946_x_at" $`16.2` [1] NA $`16.3A5` [1] "200983_x_at" "200984_s_at" "200985_s_at" "212463_at" "228748_at" $`160-KD` [1] "201224_s_at" "201225_

我是相对较新的R用户,仍在学习基础知识

我有一个命名列表xx,这些条目如下所示:

> xx[100:105]
$`15LOX-1`
[1] "207328_at"

$`16.1`
[1] "215946_x_at"

$`16.2`
[1] NA

$`16.3A5`
[1] "200983_x_at" "200984_s_at" "200985_s_at" "212463_at"   "228748_at"  

$`160-KD`
[1] "201224_s_at" "201225_s_at"

$`1600019D15Rik`
[1] "218465_at"   "222642_s_at" "225492_at"   "235907_at"   "238831_at"  
out <- melt(x)[, 2:1] #Reverse the key - value columns
out <- out[complete.cases(out) ,] #Subset only complete cases
names(out) <- c("Key", "Value")  #New column names

> out
  Key Value
1   A    a1
2   B    b1
4   D    d1
.....
我想把它保存到一个文本文件中,有两列-Key和Value。如果多个字符串对应于同一个键,则它们应位于不同的行中。不需要双引号符号

此外,如何避免保存NA值


请帮忙。

我会这样做的

#Create a matrix
z <- cbind(key=rep(names(xx), sapply(xx, length)), value = unlist(xx))
#Remove NA
z <- z[!is.na(z[,2]),]
#Write to textfile
write.table(z, "filename.txt", row.names= F)

我会这样做

#Create a matrix
z <- cbind(key=rep(names(xx), sapply(xx, length)), value = unlist(xx))
#Remove NA
z <- z[!is.na(z[,2]),]
#Write to textfile
write.table(z, "filename.txt", row.names= F)
HTH

重新创建测试数据:

xx <- structure(list(
    `15LOX-1` = "207328_at", 
    `16.1` = "215946_x_at", 
    `16.2` = NA, 
    `16.3A5` = c("200983_x_at", "200984_s_at", "200985_s_at", "212463_at", "228748_at"), 
    `160-KD` = c("201224_s_at", "201225_s_at" ), 
    `1600019D15Rik` = c("218465_at", "222642_s_at", "225492_at", "235907_at", "238831_at")),
   .Names = c("15LOX-1", "16.1", "16.2", "16.3A5", "160-KD", "1600019D15Rik"))
这将产生:

             key       value
1        15LOX-1   207328_at
2           16.1 215946_x_at
3         16.3A5 200983_x_at
4         16.3A5 200984_s_at
5         16.3A5 200985_s_at
6         16.3A5   212463_at
7         16.3A5   228748_at
8         160-KD 201224_s_at
9         160-KD 201225_s_at
10 1600019D15Rik   218465_at
11 1600019D15Rik 222642_s_at
12 1600019D15Rik   225492_at
13 1600019D15Rik   235907_at
14 1600019D15Rik   238831_at
最后,使用write.csvx,file=。。。或者使用您喜爱的写入功能将数据保存到文件。

重新创建测试数据:

xx <- structure(list(
    `15LOX-1` = "207328_at", 
    `16.1` = "215946_x_at", 
    `16.2` = NA, 
    `16.3A5` = c("200983_x_at", "200984_s_at", "200985_s_at", "212463_at", "228748_at"), 
    `160-KD` = c("201224_s_at", "201225_s_at" ), 
    `1600019D15Rik` = c("218465_at", "222642_s_at", "225492_at", "235907_at", "238831_at")),
   .Names = c("15LOX-1", "16.1", "16.2", "16.3A5", "160-KD", "1600019D15Rik"))
这将产生:

             key       value
1        15LOX-1   207328_at
2           16.1 215946_x_at
3         16.3A5 200983_x_at
4         16.3A5 200984_s_at
5         16.3A5 200985_s_at
6         16.3A5   212463_at
7         16.3A5   228748_at
8         160-KD 201224_s_at
9         160-KD 201225_s_at
10 1600019D15Rik   218465_at
11 1600019D15Rik 222642_s_at
12 1600019D15Rik   225492_at
13 1600019D15Rik   235907_at
14 1600019D15Rik   238831_at

最后,使用write.csvx,file=。。。或者使用您最喜欢的写入函数将数据保存到文件。

使用Andrie的测试数据,这里有一种巧妙的方法,可以使用整形软件包或“整形2”来实现这一点:

x <- list(
    A = "a1",
    B = "b1",
    C = NA,
    D = paste("d", 1:5, sep=""))
然后,我们可以使用complete.cases或其他等效工具拉出NAs:

rs <- melt(x)
rs <- rs[complete.cases(x),]
colnames(rs) <- c('value','key')

使用Andrie的测试数据,这里有一种巧妙的方法,可以使用重塑包或“重塑2”来实现这一点:

x <- list(
    A = "a1",
    B = "b1",
    C = NA,
    D = paste("d", 1:5, sep=""))
然后,我们可以使用complete.cases或其他等效工具拉出NAs:

rs <- melt(x)
rs <- rs[complete.cases(x),]
colnames(rs) <- c('value','key')
重塑2软件包可以通过熔化功能实现这一点。使用Andrie的数据:

require(reshape2)
 > melt(x)
  value L1
1    a1  A
2    b1  B
3  <NA>  C
4    d1  D
5    d2  D
6    d3  D
7    d4  D
8    d5  D
重塑2软件包可以通过熔化功能实现这一点。使用Andrie的数据:

require(reshape2)
 > melt(x)
  value L1
1    a1  A
2    b1  B
3  <NA>  C
4    d1  D
5    d2  D
6    d3  D
7    d4  D
8    d5  D

这可能有效,但您可以通过将代码结果粘贴到答案中来为我节省一些测试工作。这可能有效,但您可以通过将代码结果粘贴到答案中来为我节省一些测试工作。melt在重塑和重塑2包中,而不是plyr中+我要感谢你把我揍了一顿!熔体在重塑和重塑2包装中,而不是plyr+我要感谢你把我揍了一顿!对我有用。这是一个与原始数据匹配的对象上的dput:>dputxx[100:105]结构列表15lox-1=207328_at,16.1=215946_x_at,16.2=NA,16.3A5=c200983_x_at,200984___at,200985___at,212463_at,228748_at,160-KD=c201224___at,201u___at,160019D11845;=C265_at,222642_,uïïïï,.名称=c15LOX-1,16.1,16.2,16.3A5,160-KD,1600019D15Rik@DWin,晶圆厂。你能帮我一个忙,直接编辑我的问题并粘贴吗?原因是SO太聪明了,不利于它自己——当我将您的内容粘贴到编辑器中时,所有的反勾都被解释为特殊字符,并在翻译过程中消失。@Andrie:好的,我这样做了,但看起来几乎一样。也许你可以从编辑器窗口修复它?@Andrie:抱歉耽搁了。由于某种原因,我一整天都无法访问该网站。非常感谢你的帮助。我接受了这个答案,因为它使用基本的R,还创建了我需要的数据帧。谢谢,对我有用。这是一个与原始数据匹配的对象上的dput:>dputxx[100:105]结构列表15lox-1=207328_at,16.1=215946_x_at,16.2=NA,16.3A5=c200983_x_at,200984___at,200985___at,212463_at,228748_at,160-KD=c201224___at,201u___at,160019D11845;=C265_at,222642_,uïïïï,.名称=c15LOX-1,16.1,16.2,16.3A5,160-KD,1600019D15Rik@DWin,晶圆厂。你能帮我一个忙,直接编辑我的问题并粘贴吗?原因是SO太聪明了,不利于它自己——当我将您的内容粘贴到编辑器中时,所有的反勾都被解释为特殊字符,并在翻译过程中消失。@Andrie:好的,我这样做了,但看起来几乎一样。也许你可以从编辑器窗口修复它?@Andrie:抱歉耽搁了。由于某种原因,我一整天都无法访问该网站。非常感谢你的帮助。我接受了这个答案,因为它使用基本的R,还创建了我需要的数据帧。谢谢。这太酷了。虽然我经常使用Reforme2,但我不知道它会通过列表来实现这一点。+1这很酷。虽然我经常使用Reforme2,但我不知道它会通过列表来实现这一点。