早上好,
我对Powershell并不陌生,我想问你是否有人可以帮助我。
我在3.5gb处有一个很大的csv文件,我的目标是在R环境中以fread(一个data.table函数)加载它,但此函数会出错。
> n_a<-fread("C:/x/xy/xyz/name_file.csv",sep=";", fill = TRUE)
错误是:
Warning message:
In fread("C:/x/xy/xyz/name_file.csv") :
Stopped early on line 458945. Expected 29 fields but found 30. Consider fill=TRUE and comment.char=. First discarded non-empty line
我尝试使用其他方式(我在代码fill=true
中放入了代码,但没有用)解决问题,但我做不到。
经过不同的研究,我发现了这种解决方案(总是在R中执行:
>system("powershell Get-Content C:/a/b/c/file.csv | Select -Index (0..458944 + 1000000) > output.csv")
关于在R中使用powershell的重点是删除特定的行并加载并读取文件。
我的问题是:
如何在Powershell中删除csv中的特定行,但不指定矩阵的长度?
谢谢您提供各种帮助。
弗朗切斯科
Add-Type -AssemblyName System.Collections
[System.Collections.Generic.List[string]]$csvList = @()
$csvFile = 'C:\test\myfile.csv'
$csvList = [System.IO.File]::ReadLines( $csvFile )
$lineToDelete = 2
[void]$csvList.RemoveAt( $lineToDelete - 1 )
[System.IO.File]::WriteAllLines( $csvFile, $csvList ) | Out-Null