Zak*_*Zak 38 string whitespace split r vector
我有以下向量:
tmp3 <- c("1500 2", "1500 1", "1510 2", "1510 1", "1520 2", "1520 1", "1530 2",
"1530 1", "1540 2", "1540 1")
Run Code Online (Sandbox Code Playgroud)
我想在这个向量的每个原子中保留第二个数字,所以它会读取:
c(2,1,2,1,2,1,2,1,2,1)
Run Code Online (Sandbox Code Playgroud)
Sha*_*ane 36
可能有更好的方法,但这里有两种方法strsplit():
as.numeric(data.frame(strsplit(tmp3, " "))[2,])
as.numeric(lapply(strsplit(tmp3," "), function(x) x[2]))
Run Code Online (Sandbox Code Playgroud)
如果您可以使用字符,则可能不需要as.numeric()...
Mar*_*rek 21
人们可以使用read.table的textConnection:
X <- read.table(textConnection(tmp3))
Run Code Online (Sandbox Code Playgroud)
然后
> str(X)
'data.frame': 10 obs. of 2 variables:
$ V1: int 1500 1500 1510 1510 1520 1520 1530 1530 1540 1540
$ V2: int 2 1 2 1 2 1 2 1 2 1
Run Code Online (Sandbox Code Playgroud)
所以X$V2你需要的.
Sch*_*unW 11
它取决于您的实际数据与您给出的示例数据的匹配程度.我只想在空间之后获取所有东西,你可以使用gsub:
gsub(".+\\s+", "", tmp3)
[1] "2" "1" "2" "1" "2" "1" "2" "1" "2" "1"
Run Code Online (Sandbox Code Playgroud)
如果你试图实现比"占用空间之后的所有内容"更复杂的规则,那么你需要一个更复杂的常规表达式.
我认为这是最优雅的方式
> res <- sapply(strsplit(tmp3, " "), "[[", 2)
Run Code Online (Sandbox Code Playgroud)
如果你需要它是一个整数
> storage.mode(res) <- "integer"
Run Code Online (Sandbox Code Playgroud)
substr(x = tmp3, start = 6, stop = 6)
Run Code Online (Sandbox Code Playgroud)
只要你的字符串总是相同的长度,这应该可以解决问题.
(当然,您不必指定参数名称 - 也substr(tmp3, 6, 6)可以正常工作)
| 归档时间: |
|
| 查看次数: |
53567 次 |
| 最近记录: |