Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.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
R读取一个txt文件,将特定列写入新的txt文件_R_Loops - Fatal编程技术网

R读取一个txt文件,将特定列写入新的txt文件

R读取一个txt文件,将特定列写入新的txt文件,r,loops,R,Loops,我需要读取一个包含3列的文件“001.txt”,然后导出一个新名称为“new001C2.txt”的文件,该文件只包含第二列。我可以一次只处理一个文件,但我刚刚开始,还没有找到一种自动方式来处理目录中的所有文件。这可以通过lappy来完成。首先,列出所有文件名。然后用lappy阅读所有内容。这会将每个文件放入一个列表中,因此“001.txt”将是列表的第一个成员,可以通过readAll[[1]]]访问newFiles创建新文件列表,使数字与原始文件名保持一致。然后我们再次使用lappy将每个文件写

我需要读取一个包含3列的文件“001.txt”,然后导出一个新名称为“new001C2.txt”的文件,该文件只包含第二列。我可以一次只处理一个文件,但我刚刚开始,还没有找到一种自动方式来处理目录中的所有文件。

这可以通过
lappy
来完成。首先,列出所有文件名。然后用
lappy
阅读所有内容。这会将每个文件放入一个列表中,因此“001.txt”将是列表的第一个成员,可以通过
readAll[[1]]]
访问
newFiles
创建新文件列表,使数字与原始文件名保持一致。然后我们再次使用
lappy
将每个文件写入一个单独的文件

files <- c("001.txt", "002.txt", "003.txt")

readAll <- lapply(files, read.csv) 

col2 <- lapply(readAll, function(x) x[,2])

newFiles <- paste0("new", gsub(".txt", "", files), "C2.txt")

lapply(1:length(col2), function(i) write(col2[[i]], newFiles[i]))

文件如果您在基于linux的系统上,这里有一个更简单的解决方案,您可以直接从shell运行:

cut -f 2 001.txt > new001C2.txt

与一个文件共享您的代码,我们可以帮助您将其转换为函数,并将其应用于目录中的所有文件。谢谢shujaa。以下是我可以用一个文件做的:X谢谢RScriv。我不知道为什么它不起作用:lappy(文件,read.csv)[,2]中的错误:关于这一点的维数不正确。我想现在修好了,谢谢。最后一期。新名称必须保留旧文件名中的数字,不幸的是,这些是数字之间有间隙的主题ID。例如,如果第一个主题是005.txt,那么他是列表中的第一个,因此他的新文件是new001C2而不是new005C2。谢谢你的帮助!只要
文件
列表中的名称是“005.txt”等,就可以了。不使用文件名,但它们是索引的<代码>1:长度(文件)
是(在本例中)1到3。所以新文件名应该是“new001C2.txt”、“new002C2.txt”、“new003C2.txt”,我知道。因此,我基本上必须将new001与005、new002与028等匹配起来。我可以这样做,但如果有一种简单的方法在新文件名中使用旧文件名,那就太好了,我有数百个主题。