如果一行符合条件,请在 R 中粘贴
If a row matches a criteria do paste in R
假设您有一个包含两列 ID
和 POSITION
的数据框。我想根据 ID 值粘贴一些文本。
我想将 ID 值与 GK0000
(当 ID>10 时)或 GK00000
(当 ID<10 时)与 .2:
、POSITION
值一起粘贴, ..
和后面的 POSITION
值 (POSITION+1)
例如,如果 ID = 1
和 POSITION = 10
,结果将是 GK000001.2:10..11,如果 ID = 10
和POSITION = 10
,结果将是 GK000010.2:10..11
在 Excel 中,我可以使用 =IF(A2<10,CONCATENATE("GK00000",A2,".2:",B2,"..",B2+1),CONCATENATE("GK0000",A2,".2:",B2,"..",B2+1))
将 A
作为 ID
并将 B
作为 POSITION
,但我想添加它到我的 R 脚本行。
我给你一个我的输入数据的简短例子只是说明性的
ID <- c(1,5,9,10,12)
POSITION <- c(10,50,90,100,120)
df <- cbind(ID,POSITION)
我期待的结果是
CONCAT <- c("GK000001.2:10..11","GK000005.2:50..51","GK000009.2:90..91",
"GK000010.2:100..101","GK000012.2:120..121")
dfResult <- cbind(ID,POSITION,CONCAT)
我认为这个问题要求字符串格式给定两个参数,A
和 B
以及一些数字。
concat <- function(A, B, digits = 6){
fmt <- paste0("%0", digits, "d")
fmt <- paste0("GK", fmt, ".2:%d..%d")
sprintf(fmt, A, B, B + 1)
}
concat(df[, 'ID'], df[, 'POSITION'], 6)
# [1] "GK000001.2:10..11" "GK000002.2:20..21" "GK000003.2:30..31"
# [4] "GK000004.2:40..41" "GK000005.2:50..51" "GK000006.2:60..61"
# [7] "GK000007.2:70..71" "GK000008.2:80..81" "GK000009.2:90..91"
#[10] "GK000010.2:100..101" "GK000011.2:110..111" "GK000012.2:120..121"
假设您有一个包含两列 ID
和 POSITION
的数据框。我想根据 ID 值粘贴一些文本。
我想将 ID 值与 GK0000
(当 ID>10 时)或 GK00000
(当 ID<10 时)与 .2:
、POSITION
值一起粘贴, ..
和后面的 POSITION
值 (POSITION+1)
例如,如果 ID = 1
和 POSITION = 10
,结果将是 GK000001.2:10..11,如果 ID = 10
和POSITION = 10
,结果将是 GK000010.2:10..11
在 Excel 中,我可以使用 =IF(A2<10,CONCATENATE("GK00000",A2,".2:",B2,"..",B2+1),CONCATENATE("GK0000",A2,".2:",B2,"..",B2+1))
将 A
作为 ID
并将 B
作为 POSITION
,但我想添加它到我的 R 脚本行。
我给你一个我的输入数据的简短例子只是说明性的
ID <- c(1,5,9,10,12)
POSITION <- c(10,50,90,100,120)
df <- cbind(ID,POSITION)
我期待的结果是
CONCAT <- c("GK000001.2:10..11","GK000005.2:50..51","GK000009.2:90..91",
"GK000010.2:100..101","GK000012.2:120..121")
dfResult <- cbind(ID,POSITION,CONCAT)
我认为这个问题要求字符串格式给定两个参数,A
和 B
以及一些数字。
concat <- function(A, B, digits = 6){
fmt <- paste0("%0", digits, "d")
fmt <- paste0("GK", fmt, ".2:%d..%d")
sprintf(fmt, A, B, B + 1)
}
concat(df[, 'ID'], df[, 'POSITION'], 6)
# [1] "GK000001.2:10..11" "GK000002.2:20..21" "GK000003.2:30..31"
# [4] "GK000004.2:40..41" "GK000005.2:50..51" "GK000006.2:60..61"
# [7] "GK000007.2:70..71" "GK000008.2:80..81" "GK000009.2:90..91"
#[10] "GK000010.2:100..101" "GK000011.2:110..111" "GK000012.2:120..121"